Предотвратить сворачивание панели инструментов от расширения для определенных фрагментов

Я пытаюсь предотвратить расширение 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);

comment
не могли бы вы объяснить, что такое 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.2017
comment
@DasserBasyouni Похоже, у вас другая проблема с фрагментом, не прикрепленным к активности. Попробуйте найти not attached to Activity, например. stackoverflow.com/ вопросы/25262994/   -  person VIN    schedule 14.03.2017


Ответы (1)


Мне удалось решить эту проблему, используя следующее (как показано здесь от @DanielPersson):

collapsingToolbarLayout.setTitleEnabled(false);  
toolbar.setTitle(title);
person VIN    schedule 03.06.2016