如何以编程方式为工具栏设置 app:layout_scrollFlags
How to set app:layout_scrollFlags for Toolbar programmatically
我的应用程序有一个 viewpager 和 4 个选项卡,每个选项卡都有很多片段。但我只想在 2 个特定选项卡中滚动 recyclerview 时让我的工具栏滚动 up/down。但我不知道如何阻止其他选项卡的工具栏滚动。我试图为每个片段导入工具栏,但似乎我做不到。
任何人有解决这个问题的想法吗?
我强烈建议不要根据选择的选项卡更改滚动标志 - 当滚动到非 recyclerview 选项卡时,让工具栏自动 return(并且内容向下移动)会非常不和谐并且可能不是您想要的交互模式(如果您的两个 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);
}
我的应用程序有一个 viewpager 和 4 个选项卡,每个选项卡都有很多片段。但我只想在 2 个特定选项卡中滚动 recyclerview 时让我的工具栏滚动 up/down。但我不知道如何阻止其他选项卡的工具栏滚动。我试图为每个片段导入工具栏,但似乎我做不到。 任何人有解决这个问题的想法吗?
我强烈建议不要根据选择的选项卡更改滚动标志 - 当滚动到非 recyclerview 选项卡时,让工具栏自动 return(并且内容向下移动)会非常不和谐并且可能不是您想要的交互模式(如果您的两个 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);
}