我有一个只有一个Activity的安卓应用程序,其中包含许多fragment。当我显示列表界面时,我希望使用Toolbar
和app:layout_scrollFlags="scroll|enterAlways"
属性。而在详细信息fragment中,我想使用CollapsingToolbarLayout
并在其中放置一个图像。由于这是一个只有一个Activity的应用程序,我只有一个Toolbar
。是否可以通过编程方式修改我的布局以适应这两种情况?
我有一个只有一个Activity的安卓应用程序,其中包含许多fragment。当我显示列表界面时,我希望使用Toolbar
和app:layout_scrollFlags="scroll|enterAlways"
属性。而在详细信息fragment中,我想使用CollapsingToolbarLayout
并在其中放置一个图像。由于这是一个只有一个Activity的应用程序,我只有一个Toolbar
。是否可以通过编程方式修改我的布局以适应这两种情况?
是的。假设您从可折叠工具栏布局片段切换到工具栏片段。
使用AppBarLayout.setExpanded(false)
折叠您的AppBarLayout
;
更改滚动标志以适应您的需求。
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
p.setScrollFlags(...);
toolbar.setLayoutParams(p);
如果需要的话,CollapsingToolbarLayout也是一样的。我猜应该是这样的:
collapsingToolbarParams.setScrollFlags(0); //no flags for ctl
toolbarParams.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS); //new flags for toolbar
我发现它起作用了
public void disableToolBarScrolling() {
CollapsingToolbarLayout toolbar = findViewById(R.id.collap_toolbar);
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(0);
}
public void enableToolBarScrolling() {
CollapsingToolbarLayout toolbar = findViewById(R.id.collap_toolbar);
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS);
}
对我来说可行。
public void enableToolBarScrolling(CollapsingToolbarLayout toolbar) {
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS);
toolbar.setLayoutParams(params);
}
setLayoutParams()
方法了。感谢您的答案! - Mauker