2016-12-28 26 views
1

私はアンドロイドウェブビューを含むウェブアプリケーションを作成して公開しています。私のアプリを強化するとき、私はユーザーがWebビューをスクロールすると、アクションバーが消えることを実装しようとしました。私は、ユーザーのスクロール・アクションを検出して動作させるライブラリをいくつか作成しました。 しかし、スムーズに動作しません。私は答えを探していた、私は見つけることができなかった..私はそれがどのように動作し、デフォルトのブラウザと比較した。 [YouTubeのリンク:https://youtu.be/rtgB0FSP8ek](アンドロイド)アクションバー/ツールバーをスムーズに隠すには?

私がやったこと

 // When scrolling 
     public void onUpOrCancelMotionEvent(ScrollState scrollState) { 
      if (scrollState == ScrollState.UP) { 
       if(actionbar.isShowing()) actionbar.hide(); 
      } else if (scrollState == ScrollState.DOWN) { 
       if(!actionbar.isShowing())actionbar.show(); 
      } 
     } 

と私の活動のテーマでは、私は、

<item name="windowActionBarOverlay">true</item> 

と私のWebビューのレイアウトに

<LinearLayout 
     android:animateLayoutChanges="true" 
     android:fitsSystemWindows="true" 
     ..... 
これを追加しました

新年あけましておめでとうございます!

+1

CollapseToolbarLayoutを参照してください。これはあなたの保護者です。 –

+0

@SergeyShustikovコメントありがとうございました!あなたは私のルートレイアウトを変更する場合、解決することができますか?実際、CollapseToolBarLayoutについてはわかりません。 – SeetFack

+0

@Sergeyは正しいです... CollapsingToolbarLayoutはあなたの答えです...チュートリアルはGoogle – BiGGZ

答えて

0

ActionBar表示/非表示、アニメーションがないため、アニメーションをツールバーに追加して、スムーズな表示/非表示を切り替える必要があります。

void hideActionBar(){ 
    ActionBar ab = getSupportActionBar(); 
    if (ab != null && ab.isShowing()) { 
     if(toolbar != null) { 
      toolbar.animate().translationY(-212).alpha(0).setDuration(600L) 
        .setListener(new Animator.AnimatorListener() { 
         @Override 
         public void onAnimationStart(Animator animation) { 

         } 

         @Override 
         public void onAnimationEnd(Animator animation) { 
          ab.hide(); 
         } 

         @Override 
         public void onAnimationCancel(Animator animation) { 

         } 

         @Override 
         public void onAnimationRepeat(Animator animation) { 

         } 
        }).start(); 
     } else { 
      ab.hide(); 
     } 
    } 
} 

void showActionBar(){ 
    ActionBar ab = getSupportActionBar(); 
    if (ab != null && !ab.isShowing()) { 
     ab.show(); 
     if(toolbar != null) { 
      toolbar.animate().translationY(0).alpha(1).setDuration(600L).start(); 
     } 
    } 
} 
関連する問題