使用ViewPager填充屏幕空间

时间:2015-02-12 23:52:34

标签: android android-layout android-viewpager

我试图制作一个ViewPager垂直填充可用空间的布局。

基本上我在这里有一堆垂直堆叠的视图。

Checkbox
ViewPager
LinearLayout (which will contain the indicator)
Button

我想要顶部的复选框,底部的按钮,按钮上方的LinearLayout,以及ViewPager使用的中间留下的任何空间,但我似乎无法做到使它工作。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@color/white"
    android:gravity="top|center_horizontal"
    android:padding="@dimen/activity_horizontal_margin"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <CheckBox
        android:background="@drawable/login_button"
        android:id="@+id/checkbox_friend_notify"
        android:visibility="invisible"
        android:checked="false"
        android:textColor="@color/black"
        android:text="@string/friend_notify"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ViewPager
        android:id="@+id/pager"
        android:gravity="top"
        android:layout_below="@+id/checkbox_friend_notify"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:id="@+id/pager_indicator"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal"
        android:layout_below="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/start_btn"
        android:visibility="invisible"
        android:text="@string/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/white"
        android:background="@drawable/login_button"
        android:layout_below="@+id/pager_indicator"
        android:layout_alignParentBottom="true" />
</RelativeLayout>

任何指针?

1 个答案:

答案 0 :(得分:3)

如果您只需要垂直堆叠一组视图,请考虑更改垂直RelativeLayout的{​​{1}}。然后,您可以保持所有子视图相同(摆脱属性上方/下方的所有布局),除了LinearLayout ViewPagerandroid:layout_height="0dp"

说明: layout_weight告诉LinearLayout如何分配剩余的空白区域,并通过给ViewPager一个权重(并且不给任何其他子节点任何权重值),你告诉LinearLayout,ViewPager想要所有剩余的空白区域。这仅适用于未定义高度的情况(因此layout_height = 0dp)。

您可以在LinearLayout guide上了解更多相关信息。