防止 collapsingToolbar 扩展某些片段
Prevent collapsingToolbar from expanding for certain fragments
我正试图阻止 CollapsingToolbar
扩展我的一个片段。
目前,当我使用 setExpanded()
方法时,我可以看到工具栏处于折叠状态。
appBarLayout.setExpanded(false, true);
但是,collapsingToolbar 仍然可以展开,这不是我想要的。我希望 collapsingToolbar 对于这个特定片段不可扩展。
换句话说,我希望 collapsingToolbar 仅针对此特定片段表现得像一个常规工具栏(即 "not expandable")。
我正在使用 Mike Penz's Material Drawer。下面的代码显示了相关代码,注释表明我已经尝试过。
private void buildDrawer(){
Drawer drawer = new DrawerBuilder()
.withActivity(this)
.withFullscreen(true)
.withTranslucentStatusBar(true)
.withToolbar(toolbar)
.withAccountHeader(accountHeader)
.addDrawerItems(
item1,
item2,
new DividerDrawerItem(),
item3,
item4
)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment f = new Fragment();
switch (position) {
//other cases not shown
case 2:
f = new LocateFragment();
appBarLayout.setExpanded(false, true);
//Adding the following three lines don't work - causes the toolbar to be unscrollable, but in its expanded form
//AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams)collapsingToolbarLayout.getLayoutParams();
//p.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP);
//collapsingToolbarLayout.setLayoutParams(p);
//toolbar.setCollapsible(false); doesn't work either
collapsingToolbarLayout.setTitle("Locate Events");
setInvisibleAddPhotoFab();
break;
//other cases not shown
}
fragmentTransaction.replace(R.id.frame_fragments, f);
fragmentTransaction.commit();
return false; //close drawer onclick
}
})
.build();
loadBackdrop();
}
这就是我想要的 - 我希望工具栏不可展开:
不过目前还是可以展开的,所以下图不是我想要的:
更新:
我能够折叠工具栏并防止它像这样展开(下面的代码),但是我 运行 遇到了另一个问题 - 当我这样设置时,标题不再出现在 collapsingToolbar 上:collapsingToolbarLayout.setTitle("string");
appBarLayout.setExpanded(false, true);
int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics());
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appBarLayout.getLayoutParams();
lp.height = px;
appBarLayout.setLayoutParams(lp);
我能够使用以下方法解决此问题(如@DanielPersson 所示):
collapsingToolbarLayout.setTitleEnabled(false);
toolbar.setTitle(title);
我正试图阻止 CollapsingToolbar
扩展我的一个片段。
目前,当我使用 setExpanded()
方法时,我可以看到工具栏处于折叠状态。
appBarLayout.setExpanded(false, true);
但是,collapsingToolbar 仍然可以展开,这不是我想要的。我希望 collapsingToolbar 对于这个特定片段不可扩展。
换句话说,我希望 collapsingToolbar 仅针对此特定片段表现得像一个常规工具栏(即 "not expandable")。
我正在使用 Mike Penz's Material Drawer。下面的代码显示了相关代码,注释表明我已经尝试过。
private void buildDrawer(){
Drawer drawer = new DrawerBuilder()
.withActivity(this)
.withFullscreen(true)
.withTranslucentStatusBar(true)
.withToolbar(toolbar)
.withAccountHeader(accountHeader)
.addDrawerItems(
item1,
item2,
new DividerDrawerItem(),
item3,
item4
)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment f = new Fragment();
switch (position) {
//other cases not shown
case 2:
f = new LocateFragment();
appBarLayout.setExpanded(false, true);
//Adding the following three lines don't work - causes the toolbar to be unscrollable, but in its expanded form
//AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams)collapsingToolbarLayout.getLayoutParams();
//p.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP);
//collapsingToolbarLayout.setLayoutParams(p);
//toolbar.setCollapsible(false); doesn't work either
collapsingToolbarLayout.setTitle("Locate Events");
setInvisibleAddPhotoFab();
break;
//other cases not shown
}
fragmentTransaction.replace(R.id.frame_fragments, f);
fragmentTransaction.commit();
return false; //close drawer onclick
}
})
.build();
loadBackdrop();
}
这就是我想要的 - 我希望工具栏不可展开:
不过目前还是可以展开的,所以下图不是我想要的:
更新:
我能够折叠工具栏并防止它像这样展开(下面的代码),但是我 运行 遇到了另一个问题 - 当我这样设置时,标题不再出现在 collapsingToolbar 上:collapsingToolbarLayout.setTitle("string");
appBarLayout.setExpanded(false, true);
int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics());
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appBarLayout.getLayoutParams();
lp.height = px;
appBarLayout.setLayoutParams(lp);
我能够使用以下方法解决此问题(如@DanielPersson
collapsingToolbarLayout.setTitleEnabled(false);
toolbar.setTitle(title);