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

Как сохранить панель инструментов в верхней части, когда AppBar рушится/расширяется?

Обзор

Я пытаюсь реализовать одну из Scrolling Techniques, Гибкое пространство с перекрывающимся контентом, описанное в Material Design.

Гибкое пространство с перекрывающимся контентом

Содержимое может перекрывать панель приложений.

Поведение:

Начальная позиция бара приложения должна находиться за содержимым. При прокрутке вверх панель приложения должна прокручиваться быстрее, чем содержимое, пока контент больше не перекрывает его. После закрепления на месте, панель приложения поднимается вверх, чтобы содержимое могло прокручиваться под ним.

https://www.google.co.in/design/spec/patterns/scrolling-techniques.html#scrolling-techniques-scrolling


Проблема

Однако проблема заключается в том, заголовок в моем AppBar прокручивается вниз при расширении и скрывается ниже перекрывающегося содержимого.

Здесь моя панель инструментов скрыта под перекрывающимся CardView. Когда расширение приложения

Когда панель приложения сбрасывается, панель инструментов и, следовательно, заголовок снизу вверх снизу. При свертывании

код

Здесь мой код:

Активность-main.xml

<android.support.design.widget.CoordinatorLayout 
    ...
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            ...
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

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

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ...

Я также добавил их в мою функцию MainActivity onCreate

    setSupportActionBar(toolbar);

    collapsingToolbarLayout.setTitle("App Name");

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

Я прочитал документацию, прочитал много сообщений и руководств, просмотрел много видеороликов, но не нашел рабочего решения или каких-либо связанных решений вообще.

Если у кого-то есть идея, как это исправить, предложите. Спасибо за помощь.

4b9b3361

Ответ 1

Я искал решение самостоятельно, когда нашел ответ в комментариях к аналогичному выпуску.

В основном вы вызываете setTitleEnabled() на свой CollapsingToolbarLayout следующим образом:

CollapsingToolbarLayout.setTitleEnabled(false);

Вы можете сделать это и в xml, добавив это в свой CollapsingToolbarLayout:

app:titleEnabled="false"

Установив его на false, вы получите желаемое поведение. Заголовок остается фиксированным в верхней части экрана.

Сама Toolbar была на самом деле уже наверху, но это заставляет заголовок оставаться там, а не переводить между нижней частью CollapsingToolbarLayout и Toolbar.

Ответ 2

Я получил это, добавив ниже код внутри тега Toolbar.

app:layout_collapseMode="pin"

Ответ 3

В моем случае мне нужно было добавить app:titleEnabled="false" в CollapsingToolbarLayout И app:layout_collapseMode="pin" в android.support.v7.widget.Toolbar

Теперь панель инструментов удерживается в верхней части экрана, независимо от того, прокручивается ли пользователь вверх или вниз.