在CoordinatorLayout的工具栏下方添加视图
我有以下布局:
<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>
我将Fragment
添加到FrameLayout
,replace它们。 我的Fragment
是一个列表,它具有以下布局:
<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
的内容包装到一个LinearLayout
中来解决这个问题,解决了透支问题,但是这样appbar的滚动行为就不再起作用了。
任何帮助深表感谢!
采取属性
app:layout_behavior="@string/appbar_scrolling_view_behavior"
closuresRecyclerView
并将其放在您尝试在Toolbar
下显示的FrameLayout
上。
我发现滚动视图行为所做的一件重要的事情就是布置工具栏下面的组件。 由于FrameLayout
有一个将滚动( RecyclerView
)的后代, CoordinatorLayout
将获得这些滚动事件来移动Toolbar
。
还有一件事要注意:布局行为将导致FrameLayout
高度的大小,就像Toolbar
已经滚动一样 , Toolbar
完全显示,整个视图被简单地按下,使得视图的底部低于CoordinatorLayout
底部。
这对我来说是一个惊喜。 我希望在工具栏向上和向下滚动时dynamic调整视图的大小。 所以如果你在视图的底部有一个带有固定组件的滚动组件,那么在你完全滚动Toolbar
之前,你不会看到这个底层组件。
所以当我想在UI的底部定位一个button的时候,我把这个button放在CoordinatorLayout
( android:layout_gravity="bottom"
)的底部,并添加一个等于button高度的底部边距到在工具栏下查看。
我设法解决这个通过添加:
机器人:layout_marginTop = “?ATTR / actionBarSize”
到FrameLayout像这样:
<FrameLayout android:id="@+id/content" android:layout_marginTop="?attr/actionBarSize" android:layout_width="match_parent" android:layout_height="match_parent" />