Как сохранить панель инструментов в верхней части, когда 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");
Я хочу, чтобы панель инструментов (с плиткой и другим содержимым, которую я добавлю позже) оставалась наверху, независимо от расширения или сглаживания панели приложения.
Я прочитал документацию, прочитал много сообщений и руководств, просмотрел много видеороликов, но не нашел рабочего решения или каких-либо связанных решений вообще.
Если у кого-то есть идея, как это исправить, предложите. Спасибо за помощь.
Ответы
Ответ 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
Теперь панель инструментов удерживается в верхней части экрана, независимо от того, прокручивается ли пользователь вверх или вниз.