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