我有以下布局:
<android.support.design.widget.CoordinatorLayout android:id="@+id/main_content" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/appBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.design.widget.CoordinatorLayout>
我将Fragments 添加到 中FrameLayout,替换它们。我Fragment的其中一个是一个列表,它具有以下布局:
Fragment
FrameLayout
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
我的问题是 工具栏被绘制在列表上 。我试图通过将内容包装CoordinatorLayout到 aLinearLayout中来解决这个问题,这解决了过度绘制,但是这样 appbar 滚动行为不再起作用。
CoordinatorLayout
LinearLayout
任何帮助深表感谢!
取属性
app:layout_behavior="@string/appbar_scrolling_view_behavior"
关闭RecyclerView并把它放在FrameLayout你试图在下面显示的Toolbar。
RecyclerView
Toolbar
我发现滚动视图行为所做的一件重要事情是将组件布局在工具栏下方。因为有一个会滚动 ( )FrameLayout的后代,所以将获得那些用于移动 的滚动事件。RecyclerView``CoordinatorLayout``Toolbar
RecyclerView``CoordinatorLayout``Toolbar
另一件需要注意的事情:该布局行为将导致FrameLayout高度的大小 _就像Toolbar已经滚动_一样,并且在Toolbar完全显示的情况下,整个视图被简单地向下推,以便视图的底部低于底部CoordinatorLayout.
这对我来说是一个惊喜。我期待视图在工具栏上下滚动时动态调整大小。因此,如果您的视图底部有一个带有固定组件的滚动组件,则在完全滚动Toolbar.
因此,当我想在 UI 底部锚定一个按钮时,我通过将按钮放在CoordinatorLayout( android:layout_gravity="bottom") 的底部并在工具栏下方的视图中添加一个等于按钮高度的底部边距来解决这个问题。
android:layout_gravity="bottom"