我正在开发的应用程序包含一个在 Activity 中实现的 Navigation Drawer。活动布局如下:
<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>
这是一种很常见的模式,唯一变化频繁的是容器布局中的 Fragment。
如果任何 Fragment 具有滚动元素,则在滚动时,CoordinatorLayout 将愉快地进行位置转换,包括 Toolbar/AppBarLayout。
这里真正的问题是,当 Fragment 被替换时,工具栏的位置保持不变,即,如果工具栏被隐藏,它将保持原样,这不是预期的。
结果是这样的:
这个:
卡住:
在这种情况下如何重置工具栏位置?
编辑: 可能存在错误,仅在重新启动应用程序(按返回按钮并打开应用程序)时调用 AppBarLayout 偏移更改侦听器,并在激烈的甩动后停止再次调用。