linearlayout中的viewpager不尊重重量

时间:2014-09-29 14:19:14

标签: android android-layout android-viewpager

我有这个xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:orientation="vertical"

android:weightSum="1">

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0">

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:background="#A00A0A"
        android:paddingBottom="4dp"
        android:paddingTop="4dp" />

</android.support.v4.view.ViewPager>

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_weight="1"
    android:text="New Switch" />

</LinearLayout>

我的问题是ViewPager填充了父级的高度,无论我设置的是什么设置或权重,都看不到Switch。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果你使用体重作为身高,那么你的身高应该是0dp。试试这个答案。

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v4.view.ViewPager 
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <android.support.v4.view.PagerTitleStrip
            android:id="@+id/pager_title_strip"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#A00A0A"
            android:paddingBottom="4dp"
            android:paddingTop="4dp" />

    </android.support.v4.view.ViewPager>

    <Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="New Switch" />

    </LinearLayout>

答案 1 :(得分:0)

如果您设置ViewPager的身高wrap_content,那就无所谓了。它就像

android:layout_height="match_parent"

您必须设置某个dimension喜欢

android:layout_height="150dp"

或者如果您在RelativeLayout中使用它,则可以使用

android:layout_height="0dp"
android:layout_weight="1"

或者您必须设置开关alignParentBottom并将ViewPager设置在其上方。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true">

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/my_switch">

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#A00A0A"
        android:paddingBottom="4dp"
        android:paddingTop="4dp" 
        />

</android.support.v4.view.ViewPager>

<Switch
    android:id="@+id/my_switch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_alignParentBottom="true"
    android:layout_weight="1"
    android:text="New Switch" />

</RelativeLayout>