如何以编程方式为工具栏设置app:layout_scrollFlags

我的应用程序有一个viewpager和4个选项卡,每个选项卡有很多片段。 但是我只想让我的工具栏滚动向上/向下滚动recyclerview在2个特定的选项卡。 但我不知道如何阻止其他选项卡的工具栏滚动。 我试图导入每个片段的工具栏,但似乎我不能这样做。 任何人有想法解决这个问题?

我强烈build议不要根据select的选项卡更改滚动标志 – 当滚动到非回收标签页时,让工具栏自动返回(并且内容向下移动)可能会非常刺耳,可能不是您想要的交互模式如果你的两个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); }