我有一个带有AppBarLayout和可折叠TabLayout的CoordinatorLayout。我的内容有一个ViewPager。到目前为止,这是工作层次结构:
<CoordinatorLayout>
<AppBarLayout>
<Toolbar />
<TabLayout />
</AppBarLayout>
<ViewPager />
</CoordinatorLayout>
现在我希望在底部有一个我可以隐藏的片段。隐藏底部片段时,ViewPager应占用所有可用空间。当底部片段可见时,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中,但当片段的FrameLayout可见时,ViewPager的顶部位于AppBar的后面。
有人可以帮忙吗?
答案 0 :(得分:1)
我不是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's
layout_width
和layout_weight
非常重要,因此请复制这些确切的值。