2013-04-18 20 views
7

Questo è il layout XML su cui sto lavorando:Android: strana inversione peso in LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF" 
    android:orientation="vertical" > 

    <ScrollView 
     android:layout_weight="2" 
     android:id="@+id/scrollConfirm" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

    </ScrollView> 

    <LinearLayout 
     android:layout_marginTop="20px" 
     android:layout_weight="1" 
     android:id="@+id/imageNumpad" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <ImageView android:src="@drawable/myicon" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom" 
      android:background="#FFFFFF" 
     /> 
    </LinearLayout> 
</LinearLayout> 

Da quando ho impostato lo ScrollView con layout_weight="2" e il LinearLayout (bambino) con layout_weight="1" Mi aspettavo che lo ScrollView sarà utilizzare due volte lo spazio libero su LinearLayout. Ma ottengo il risultato opposto. ScrollView è più piccolo di LinearLayout. Considerando che se si imposta ScrollView layout_weight="1" e LinearLayout con layout_weight="2", ScrollView è maggiore di LinearLayou.

Com'è possibile ??

risposta

15

Il peso è inverso perché si utilizza match_parent come layout_height. Il peso viene utilizzato per distribuire lo spazio vuoto restante o portare via lo spazio quando la somma totale è maggiore dello LinearLayout. Imposta le tue altezze a 0dip funzionerà.

e, set layout_height = "0dip" per entrambi ScrollView e interno LinearLayout.

Riferimento:

The use of layout_weight with Android layouts