私のアプリにはビューページャーと4つのタブがあり、各タブには多くのフラグメントがあります。ただし、2つの特定のタブで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)
// 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);
}