Я пытаюсь предотвратить расширение CollapsingToolbar для одного из моих фрагментов.
В настоящее время, когда я использую метод setExpanded(), я могу видеть панель инструментов в свернутом состоянии.
appBarLayout.setExpanded(false, true);
Тем не менее, сворачивающаяся панель инструментов по-прежнему расширяема, а это не то, что мне нужно. Я хочу, чтобы сворачивающаяся панель инструментов не расширялась для этого конкретного фрагмента.
Другими словами, я хочу, чтобы сворачивающаяся панель инструментов вела себя и выглядела как обычная панель инструментов (т.е. «не расширяемая») только для этого конкретного фрагмента.
Я использую Материал Майка Пенза. В приведенном ниже коде показан соответствующий код с примечаниями, указывающими, что я пробовал.
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();
}
Это то, что я хочу - я хочу, чтобы панель инструментов была нерасширяемой:
Однако в настоящее время его все еще можно расширить, поэтому изображение ниже НЕ то, что я хочу:
ОБНОВЛЕНИЕ: мне удалось свернуть панель инструментов и предотвратить ее расширение (код ниже), но я столкнулся с другой проблемой: заголовок больше не отображается на сворачивающейся панели инструментов, когда я устанавливаю его как так: 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);


80в строке кода px, потому что это дает мне строку инициализации px,FATAL EXCEPTION: main Process: project...n, PID: 24890 java.lang.IllegalStateException: Fragment xFragment{ffd3ec0} not attached to Activity at android.support.v4.app.Fragment.getResources(Fragment.java:646) at project....Fragment.<init>- person Dasser Basyouni   schedule 14.03.2017not attached to Activity, например. stackoverflow.com/ вопросы/25262994/ - person VIN   schedule 14.03.2017