Android SupportLib - CoordinatorLayout 中的 FrameLayout,AppBarLayout 占用整个屏幕高度
Android SupportLib - FrameLayout in CoordinatorLayout with AppBarLayout consuming entire screen-height
我目前在 Android 设计支持库的 CoordinatorLayout
中遇到 FrameLayout
的问题,而我在创建 post选项卡。
基本上大多数事情都按预期工作,容器片段被膨胀到 FrameLayout
并且他们的标签片段被正确添加到 ViewPager
作为标签(需要这样因为我有得到了许多应该重用布局的片段。
我正在努力解决的问题是 FrameLayout
(结果也是标签片段)占用了整个屏幕高度,因此它与 Toolbar
和 [=20 重叠=].为了可视化问题,我创建了下图:
Base-Layout with CoordinatorLayout
, Toolbar
, and 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
-class 膨胀(在另一个 post 上调用 inflater.inflate(getLayoutRes(), null);
是导致同样问题的问题)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(getLayoutRes(), container, false);
}
如果我将 CoordinatorLayout
替换为正常的 LinearLayout
,则 FrameLayout
按预期从 AppBarLayout
开始,但根据 documentation AppBarLayout
因为它的大部分功能需要是 CoordinatorLayout
.
的直接子代
我可以在 FrameLayout
中添加一个 marginTop
,但我想知道是否有任何合适的解决方案。提前感谢您的任何提示!
将您的 app:layout_behavior="@string/appbar_scrolling_view_behavior"
移至 FrameLayout
- 该属性需要位于 CoordinatorLayout
的直接子项上。
我目前在 Android 设计支持库的 CoordinatorLayout
中遇到 FrameLayout
的问题,而我在创建 post选项卡。
基本上大多数事情都按预期工作,容器片段被膨胀到 FrameLayout
并且他们的标签片段被正确添加到 ViewPager
作为标签(需要这样因为我有得到了许多应该重用布局的片段。
我正在努力解决的问题是 FrameLayout
(结果也是标签片段)占用了整个屏幕高度,因此它与 Toolbar
和 [=20 重叠=].为了可视化问题,我创建了下图:
Base-Layout with CoordinatorLayout
, Toolbar
, and 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
-class 膨胀(在另一个 post 上调用 inflater.inflate(getLayoutRes(), null);
是导致同样问题的问题)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(getLayoutRes(), container, false);
}
如果我将 CoordinatorLayout
替换为正常的 LinearLayout
,则 FrameLayout
按预期从 AppBarLayout
开始,但根据 documentation AppBarLayout
因为它的大部分功能需要是 CoordinatorLayout
.
我可以在 FrameLayout
中添加一个 marginTop
,但我想知道是否有任何合适的解决方案。提前感谢您的任何提示!
将您的 app:layout_behavior="@string/appbar_scrolling_view_behavior"
移至 FrameLayout
- 该属性需要位于 CoordinatorLayout
的直接子项上。