2014-09-29 54 views
0

我有這個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

回答

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

這確實糾正了這一點,我注意到,正如「AndroidEnthusiast」所說,將權重設置爲「1」解決了問題 – user1333057 2014-09-29 14:49:11

-2

如果設置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