Панель инструментов внутри 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>

Then I want to set the title of the Toolbar with the following code, but it didn't work. The title just didn't show.

    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 сработает.

Я что-то пропустил? Эта проблема такая странная. Это ошибка в библиотеке поддержки дизайна? Как я могу решить это, не меняя макет?


person alijandro    schedule 25.08.2015    source источник
comment
Попробуйте android:fitsSystemWindows="true" на своих CoordinatorLayout, AppBarLayout и CollapsingToolbarLayout.   -  person Farbod Salamat-Zadeh    schedule 28.08.2015
comment
@FarbodSalamat-Zadeh Спасибо за ваш ответ. Это не сработало после того, как я попробовал, как вы сказали.   -  person alijandro    schedule 06.09.2015
comment
какие-либо обновления по этому поводу? Столкнулся с такой же проблемой здесь!!   -  person Shatazone    schedule 03.03.2016


Ответы (4)


Это временное решение. Я не исследовал код глубоко, но отключив обновление 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();
    }
}
person alijandro    schedule 06.09.2015
comment
Вы нашли постоянное решение для этого? Я использую это в настоящее время, но я не знаю, надежно ли это - person Bhargav; 21.12.2015
comment
Не уверен, почему, но это работает, достаточно хорошо, пока я не могу найти другого способа сделать это. - person Lancelot; 01.03.2016
comment
Это должно работать! Очень хороший. На самом деле уже зарегистрированы ошибки: code.google.com/p/android/issues/ Я считаю, что этот ответ связан с ответами на эти сообщения: stackoverflow.com/questions/32073812/ | stackoverflow.com/questions/30682548 / - person Neon Warge; 05.03.2016

Просто установите «titleEnabled = false» для панели инструментов Collapsing в xml, после чего появится заголовок панели инструментов.

    app:titleEnabled="false"
person Junaid Ahmed    schedule 07.10.2017

попробуй это :

collapsingToolbarLayout.setTitleEnabled(false);
toolbar.setTitle("ABC");
person Kevin    schedule 07.11.2017

Переехать

CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout);
collapsingToolbarLayout.setTitleEnabled(true);
collapsingToolbarLayout.setTitle("ABC");

от onCreate к onCreateView внутри, если

person Arsen Khondkaryan    schedule 22.03.2016
comment
почему у вас обоих одинаковое имя? - person ; 23.11.2016