69

私のアプリにはビューページャーと 4 つのタブがあり、各タブには多くのフラグメントがあります。しかし、2 つの特定のタブで recyclerview をスクロールしているときに、ツールバーを上下にスクロールしたいだけです。しかし、他のタブのツールバーのスクロールをブロックする方法がわかりません。フラグメントごとにツールバーをインポートしようとしましたが、できないようです。誰でもこの問題を解決する考えがありますか?

4

2 に答える 2

140

どのタブが選択されているかに基づいてスクロール フラグを変更しないことを強くお勧めします。recyclerview 以外のタブにスクロールするときにツールバーが自動的に戻る (そしてコンテンツが下に移動する) ことは、非常に耳障りであり、おそらく必要な対話パターンではない可能性があります ( 2 つのRecyclerViewタブが隣り合っているとイライラします)。

ただし、直接見たい場合は、setScrollFlags()を使用してプログラムでスクロール フラグを設定できます。

Toolbar toolbar = ... // your toolbar within an AppBarLayout
AppBarLayout.LayoutParams params = 
    (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
    | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);

フラグをクリアするには

params.setScrollFlags(0)
于 2015-06-11T04:58:51.443 に答える
15
// Show toolbar when we are in maps mode
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) mToolbar.getLayoutParams();
CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
if(isMapIndex) {
    params.setScrollFlags(0);
    appBarLayoutParams.setBehavior(null);
    mAppBarLayout.setLayoutParams(appBarLayoutParams);
} else {
    params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
    appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
    mAppBarLayout.setLayoutParams(appBarLayoutParams);
}
于 2016-05-27T18:32:03.877 に答える