Панель инструментов внутри CollapsingToolbarLayout, заголовок панели инструментов не отображается
Я использовал CollapsingToolbarLayout
как родительский элемент Toolbar
, под ним макет
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/test_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize"
app:navigationIcon="@drawable/abc_ic_ab_back_mtrl_am_alpha"
app:theme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
Затем я хочу установить заголовок Toolbar
следующим кодом, но он не работает. Название просто не показывалось.
Toolbar toolbar = (Toolbar) findViewById(R.id.test_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setTitle("ABC");
Я также попытался установить заголовок в CollapsingToolbarLayout
со следующим кодом, он тоже не работает.
CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout);
collapsingToolbarLayout.setTitleEnabled(true);
collapsingToolbarLayout.setTitle("ABC");
Но если я удалил CollapsingToolbarLayout
из моего макета и сделаю AppBarLayout
в качестве прямого родителя Toolbar
, код, указанный выше, чтобы установить заголовок Toolbar
.
Я что-то пропустил? Эта проблема настолько странная. Это ошибка в библиотеке поддержки дизайна? Как я могу решить это без изменения моего макета?
Ответы
Ответ 1
Это временное решение. Я не исследовал код глубоко, но отключив обновление Toolbar
в CollapsingToolbarLayout
, он сработал.
Вот что я сделал:
public static void setRefreshToolbarEnable(CollapsingToolbarLayout collapsingToolbarLayout,
boolean refreshToolbarEnable) {
try {
Field field = CollapsingToolbarLayout.class.getDeclaredField("mRefreshToolbar");
field.setAccessible(true);
field.setBoolean(collapsingToolbarLayout, refreshToolbarEnable);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
Ответ 2
Просто установите Collapsing toolbar 'titleEnabled = false' в xml. Появится заголовок панели инструментов.
app:titleEnabled="false"
Ответ 3
Переместить
CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout);
collapsingToolbarLayout.setTitleEnabled(true);
collapsingToolbarLayout.setTitle("ABC");
from onCreate to onCreateView внутри, если
Ответ 4
попробуйте следующее:
collapsingToolbarLayout.setTitleEnabled(false);
toolbar.setTitle("ABC");