带有工具栏和片段的CoordinatorLayout

我使用下面的布局, CoordinatorLayout里面保存着AppBarLayout (里面有ToolbarTabLayout )和一个占位符RelativeLayout ,所以我可以在里面添加和replace片段。

我遇到了margin margin错误,我在RelativeLayout上添加的片段总是会超出屏幕底部(类似于AppBarLayout高度的大小),我尝试将其高度设置为wrap_contentmatch_parent ,在这两种情况下,它都会过度。

如果我从RelativeLayout删除app:layout_behavior="@string/appbar_scrolling_view_behavior" ,那么它的顶部将会在AppBarLayout ,这也不是所期望的结果。

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_height="match_parent" android:layout_width="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" 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.Dark.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:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:layout_scrollFlags="scroll|enterAlways" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" app:tabIndicatorHeight="4dp" app:tabIndicatorColor="#ffffff" app:tabMode="scrollable" android:visibility="gone" android:layout_width="match_parent" android:layout_height="wrap_content" /> </android.support.design.widget.AppBarLayout> <RelativeLayout app:layout_behavior="@string/appbar_scrolling_view_behavior" android:id="@+id/main_fragment_container" android:layout_width="match_parent" android:layout_height="wrap_content"/> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_margin="20dp" android:src="@drawable/ic_done" /> </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_height="match_parent" android:layout_width="wrap_content" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header" app:menu="@menu/drawer_view"/> </android.support.v4.widget.DrawerLayout> 

Solutions Collecting From Web of "带有工具栏和片段的CoordinatorLayout"

我已经想出了在使用协调器布局时在工具栏下方显示片段的问题。 我的问题是:

在这个图片中,它显示了片段被工具栏重叠。

现在把你的AppBarLayout和FrameLayout放在LinearLayout里面,

 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.AppBarLayout android:id="@+id/mainappbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <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"/> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout> 

现在你的问题解决了。 这将是这样的。

最后的形象。

如果在片段中有ScrollView,你也会看到这个问题。 所以确保你使用一个NestedScrollView代替:

 <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> 

有同样的问题。 使用参数app:layout_behavior="@string/appbar_scrolling_view_behavior"RelativeLayout更改为FrameLayout解决了我的问题。

 <FrameLayout android:id="@+id/main_fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

这个问题已经通过更新recyclerview库(com.android.support:recyclerview-v7:22.2.0)

我正在加载的片段有一个回收的视图。