Подтвердить что ты не робот

CollapsingToolbarLayout setTitle() больше не работает

В методе setTitle() из CollapsingToolbarLayout уже были некоторые ошибки (например, показано только после прокрутки, исправлено в v22.2.1).

Сегодня я обновился до v23.0.0, и он просто не работает, как показано на рисунке. Вызывая его несколько раз с задержкой, я вижу, что иногда заголовок есть, но он действительно ненадежный (например, вы переключаетесь на другой фрагмент, а затем возвращаетесь к первому, и больше нет названия).

Я нашел там новый атрибут app:titleEnabled или CollapsingToolbarLayout.setTitleEnabled(boolean). Я установил оба значения true, но это ничего не меняет.

Кто-нибудь из вас испытывает такое же поведение?

Интересно, сколько приложений на рынке действительно использует эту Библиотеку дизайна, она была полна ошибок с самого первого выпуска и не улучшается.

Изменить

С дальнейшим тестированием кажется (я не уверен на 100%) он подключен к новому AppBarLayout.setExpanded() api.

Если я вызываю:

collapsingToolbar.setTitle("title");

он работает, но если я позвоню

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(true, true);
//OR
appbarLayout.setExpanded(true, true);
collapsingToolbar.setTitle("title");

нет - нет названия. То же самое с setExpanded(false, true), i. е. пытаясь свернуть панель инструментов.

Edit2 (sep 2015)

Ну, нет. Проблема присутствует, даже когда я никогда не звоню abl.setExpanded() или app:expanded. Кроме того, мы сейчас на v23.0.1, и это все еще не исправлено. Похоже, что только некоторые из нас испытывают это, потому что я не мог найти ничего здесь или в официальном списке ошибок. Я подал ошибку здесь.

4b9b3361

Ответ 1

Заголовок не отображается, поскольку высота макета AppBarLayout слишком мала. У меня была высота 110dp, и это сработало в версии 22.2.1. После того, как я обновился до версии v.2.0.0, мне пришлось изменить высоту, по крайней мере, на 125dp, чтобы заголовок отображался. Нет необходимости использовать новые вызовы атрибутов или методов. Вот мой макет:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_height="125dp"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/toolbarLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:expandedTitleTextAppearance="@style/ExpandedAppBarTitle"
        app:expandedTitleMarginStart="14dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_height="?attr/actionBarSize"
            android:layout_width="match_parent"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:layout_collapseMode="pin"/>
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<android.support.v7.widget.RecyclerView android:id="@android:id/list"
                                        xmlns:android="http://schemas.android.com/apk/res/android"
                                        android:layout_width="match_parent"
                                        android:layout_height="match_parent"
                                        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/addbtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end|bottom"
    app:borderWidth="0dp"
    android:layout_margin="@dimen/fab_margin"
    android:src="@drawable/ic_add" />

Ответ 2

Я пробовал некоторые комбинации в своем приложении:

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(true, true); // works

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(true, false); // works

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(false, true); // works

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(false, false); // doesn't show title

Я назвал эти методы в onCreateView() в моем фрагменте. AppBarLayout расширен по умолчанию, который можно изменить с помощью XML в вашем макете, хотя, когда я определяю его, чтобы он не расширялся в XML, он также не отображает название. Странные вещи... в любом случае, если у вас есть идея, как я могу помочь дальше, дайте мне знать.