2015-02-12 3 views
0

Я пытаюсь сделать макет, в котором 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> 

Любые указатели?

ответ

3

Если вам просто нужен набор изображений, расположенных по вертикали, рассмотрите возможность изменения RelativeLayout для вертикальной линии LinearLayout. Затем вы можете сохранить все ваш ребенок видит то же самое (избавившись от всех макета выше/ниже атрибутов), за исключением дать ViewPagerandroid:layout_height="0dp" и android:layout_weight="1"

Разъяснения: layout_weight говорит LinearLayout, как распределить остатки белого пространства, и давая ViewPager вес (и не давая ни одному из других детей значения веса), вы говорите LinearLayout, что ViewPager хочет все оставшееся пустое пространство для себя. Это работает, только если вы не определяете высоту (следовательно, layout_height = 0dp).

Подробнее об этом можно узнать на странице LinearLayout guide.

+0

Раньше я использовал 'layout_weight', чтобы давать представления в процентах, но я не знал, что это было для оставшегося пространства. Работал отлично, спасибо большое @ekchang – Sandy

Смежные вопросы