viewpager内的LinearLayout不尊重重量

问题描述:

我有这个XML文件:viewpager内的LinearLayout不尊重重量

<?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填补了父母的身高,无论设置,或重量我把和开关是没见过

我该如何解决这个问题?

+2

设置权重为1为视图寻呼机 – AndroidEnthusiast 2014-09-29 14:24:34

+0

谢谢,解决了它! – user1333057 2014-09-29 14:49:57

如果你使用体重来表示身高,那么你的身高应该是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> 
+0

这确实纠正了这一点,我注意到,正如“AndroidEnthusiast”所说,将权重设置为“1”解决了问题 – user1333057 2014-09-29 14:49:11

如果设置viewpager的高度总结的内容,它会没有关系。它就像

android:layout_height="match_parent" 

你必须设置一定的维度,例如

android:layout_height="150dp" 

,或者你必须设置你的开关对准父母底部,并设置上方的它视图寻呼机。

<?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> 
+0

我们不能使用layout_alighParentBottom在LinearLayout内切换。 layout_alighParentBottom是RelativeLayout的一个属性。你的回答是错误的。 – 2014-09-29 14:35:06

+0

是的你是对的。我没有意识到。因为您在根视图中使用了android:layout_alignParentBottom =“true” android:layout_centerHorizo​​ntal =“true”,因此必须将其更改为相对布局。 – savepopulation 2014-09-29 14:37:21