Как сбросить положение панели инструментов, контролируемой CoordinatorLayout?
Приложение, над которым я работаю, состоит из окна навигации, которое реализовано в Activity. План действий выглядит следующим образом:
<FrameLayout 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.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<include
android:id="@+id/appbar"
layout="@layout/appbar" />
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/header_drawer"
app:menu="@menu/menu_nav">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
</FrameLayout>
Это очень распространенный шаблон, единственное, что часто меняется, это фрагмент внутри макета контейнера.
Если у какого-либо фрагмента есть элемент прокрутки, при прокрутке CoordinatorLayout с удовольствием выполнит переводы позиции, включая Toolbar / AppBarLayout.
Настоящая проблема здесь заключается в том, что при замене фрагмента положение панели инструментов остается прежним, т. Е. Если панель инструментов скрыта, она останется такой, которая не предназначена.
Результат таков:
Это:
Застревает:
Как можно сбросить положение панели инструментов для этого случая?
РЕДАКТИРОВАТЬ: Вероятна ошибка, слушатель изменения смещения AppBarLayout вызывается только при перезапуске приложения (нажмите кнопку назад и откройте приложение) и перестает вызываться после интенсивного броска.