我目前FrameLayout
在Android 设计支持库中遇到问题,而我在创建选项卡时CoordinatorLayout
遵循了这篇文章中的说明。
基本上大多数事情都按预期工作,容器片段被膨胀到FrameLayout
并且它们的标签片段被正确地添加到ViewPager
标签中(需要这种方式,因为我有许多应该重用布局的片段)。
我正在努力解决的问题是FrameLayout
(以及结果标签片段)消耗了整个屏幕高度,因此它Toolbar
与TabLayout
. 为了可视化问题,我创建了以下图像:
CoordinatorLayout
带有、Toolbar
和的基本布局TabLayout
:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<include layout="@layout/toolbar" />
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.design.widget.CoordinatorLayout>
片段使用的单独布局膨胀为container
:
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_height="match_parent"
android:layout_width="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
所有片段都被我的班级夸大了BaseFragment
(在另一篇关于 SO 调用的帖子上inflater.inflate(getLayoutRes(), null);
是导致同样问题的问题)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(getLayoutRes(), container, false);
}
如果我将 替换CoordinatorLayout
为正常LinearLayout
,则按预期FrameLayout
开始,AppBarLayout
但根据文档,它的AppBarLayout
大多数功能都需要是CoordinatorLayout
.
我可以添加一个marginTop
,FrameLayout
但我想知道是否有任何合适的解决方案。提前感谢您的任何提示!