【发布时间】:2015-08-13 19:26:50
【问题描述】:
我正在开发的应用程序包含一个在 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 被替换时,Toolbar 的位置保持不变,即如果 Toolbar 被隐藏,它将保持不变 这不是故意的。
结果是这样的:
这个:
卡住了:
在这种情况下如何重置工具栏位置?
编辑: 可能是一个错误,AppBarLayout 偏移量更改监听器仅在重新启动应用程序(按下返回按钮并打开应用程序)时被调用,并在激烈的甩动后停止再次被调用。
【问题讨论】:
-
您找到解决方案了吗?
-
还没有,有好心人在这里回答了,我还没来得及讨论他就删了他的帖子,他说他在AppBarLayout上使用setTranslationY()来操作它而不是重置它,并提到它应该可以工作,这对我来说不是,仍在寻找答案。找到后我一定会发布解决方案。
-
嘿,@razzledazzle,我正在尝试将带有 recyclerview 的片段放入作为 CoordinatorLayout 一部分的 FrameLayout 中。我在 FrameLayout 中指定了 layout_behavior,但 AppBarLayout 不滚动。你有什么不同的做法吗?我必须在我的活动中初始化视图吗?
-
修复了它。忘记在工具栏中添加
app:layout_scrollFlags="scroll"。 -
还有一件事。即使我在回收站视图中没有项目,工具栏仍会滚动。知道如何解决这个问题吗?
标签: android navigation-drawer android-design-library androiddesignsupport