Как закрепить заголовок на панели инструментов внутри CollapsingToolbarLayout

Вот мой макет:

<android.support.design.widget.AppBarLayout <android.support.design.widget.CollapsingToolbarLayout ... <android.support.v7.widget.Toolbar ... /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> 

Я хочу, чтобы заголовок оставался на панели инструментов, а не в CollapsingToolbarLayout. Поэтому я изменил свой код:

 mCollapsingToolbar = ... mCollapsingToolbar.setTitle(title); 

чтобы:

 mTitleBar = ... setSupportActionBar(mTitleBar); getSupportActionBar().setTitle(title); 

Но название не видно. Мое устройство – Nexus 6 5.1.0

Заранее спасибо.


Обновление 1: я изменил код на это, все еще не работает 🙁

 setSupportActionBar(mToolbar); getSupportActionBar().setTitle(title); getSupportActionBar().setDisplayShowTitleEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Обновление 2: Вот фрагмент кода для этих трех видов:

 private void setUpAppBarLayout() { AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar_layout); appBarLayout.setBackgroundColor(extractBackgroundColor()); } private void setUpCollapsingToolbarLayout() { if (null == mCollapsingToolbar) { mCollapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); } } private void setUpToolbar(String title) { mToolbar = (Toolbar) findViewById(R.id.tb_main); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { supportFinishAfterTransition(); } }); mToolbar.inflateMenu(R.menu.menu_group_activity); mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (R.id.action_settings == item.getItemId()) { ... return true; } else { return false; } } }); mToolbar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mRecyclerView.smoothScrollToPosition(0); } }); setSupportActionBar(mToolbar); getSupportActionBar().setTitle(title); getSupportActionBar().setDisplayShowTitleEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } 

После вызова setSupportActionBar (mToolbar) оба заголовка и меню невидимы.

Solutions Collecting From Web of "Как закрепить заголовок на панели инструментов внутри CollapsingToolbarLayout"

На самом деле похоже, что заголовок с панели инструментов пропал, когда вы завернули его в CollapsingToolBarLayout, поэтому единственным решением, которое я получил для этой проблемы, является создание нового TextView и добавление его в панель инструментов, помните, что панель инструментов представляет собой ViewGroup, поэтому вы Может добавить к нему виджеты. Это не так чисто, как хотелось бы, но сейчас это работает.

 TextView text = new TextView(this); text.setText(title); text.setTextAppearance(this, android.R.style.TextAppearance_Material_Widget_ActionBar_Title_Inverse); toolbar.addView(text); 

Надеюсь, я тоже скоро найду xml-friendly решение для этого.

Чтобы заголовок панели инструментов работал с CollapsingToolbarLayout, вам нужно установить для заголовка ctl значение false

 CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); collapsingToolbarLayout.setTitleEnabled(false); 

Решение легко. Как сказал Дэниел Перссон, вы просто установили collapsingToolbarLayout.setTitleEnabled(false); Или использовать app:titleEnabled="false" атрибута XML app:titleEnabled="false" и установить заголовок с помощью внутренней панели инструментов вместо CollapsingToolbarLayout, то есть: toolbar.setTitle(title);

Это очень просто и не требует обходных решений.

Трюк здесь заключается в том, чтобы установить titleEnabled = false для CollapsingToolbarLayout

 <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:titleEnabled="false"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:minHeight="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:title="Message" app:titleMarginTop="13dp" app:titleTextColor="@android:color/white" /> </android.support.design.widget.CollapsingToolbarLayout> 

Или через код:

 CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout); collapsingToolbarLayout.setTitleEnabled(false); 

Вам нужно включить actionBar.setDisplayHomeAsUpEnabled(true); В вашем коде

Может быть, это? Просто добавьте android:fitsSystemWindows="true" в AppBarLayout

 <android.support.design.widget.CoordinatorLayout ... android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="300dp" ... android:fitsSystemWindows="true" > <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:title="My Title" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> ... </android.support.design.widget.CoordinatorLayout> 

Это то, что ты получаешь