我有一个带有 AppBarLayout 和可折叠 TabLayout 的 CoordinatorLayout。我的内容有一个 ViewPager。这是到目前为止的工作层次结构:
<CoordinatorLayout>
<AppBarLayout>
<Toolbar />
<TabLayout />
</AppBarLayout>
<ViewPager />
</CoordinatorLayout>
现在我想在底部有一个可以隐藏的 fragment 。当隐藏底部 fragment 时,ViewPager 应该占用所有可用空间。当底部 fragment 可见时,不应混淆 ViewPager 的任何部分。
这是第一次尝试:
<CoordinatorLayout>
<AppBarLayout>
<Toolbar />
<TabLayout />
</AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<FrameLayout
android:id="@id/fragmentContainer"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_gravity="bottom"
android:background="@android:color/background_light"
android:elevation="@dimen/action_bar_elevation"/>
</CoordinatorLayout>
使用此布局,当框架布局可见时,我的 ViewPager 的底部会被混淆。为 ViewPager 提供具有 FrameLayouts 高度的底部边距,即使 FrameLayout 消失了,我的底部也总是有一个空白区域。
我尝试将 ViewPager 和 FrameLayout 包装在 LinearLayout 中,但是当 fragment 的 FrameLayout 可见时,ViewPager 的顶部位于 AppBar 后面。
有人可以帮忙吗?
最佳答案
我不是 100% 确定我是否理解你的问题,但你为什么不试试这个:
<CoordinatorLayout>
<AppBarLayout>
<Toolbar />
<TabLayout />
</AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<FrameLayout
android:id="@id/fragmentContainer"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_gravity="bottom"
android:background="@android:color/background_light"
android:elevation="@dimen/action_bar_elevation"/>
</LinearLayout>
</CoordinatorLayout>
ViewPager 的
layout_width
和 layout_weight
非常重要,因此请复制这些确切的值。
关于android - 底部带有可隐藏 fragment 的 CoordinatorLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34150484/