Android:LinearLayout中奇怪的权重反转

GVi*_*i82 12 android android-linearlayout android-view

这是我正在研究的xml布局:

<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>
Run Code Online (Sandbox Code Playgroud)

由于我已经设置了ScrollView layout_weight="2"和LinearLayout(子),layout_weight="1"我预计ScrollView会占用LinearLayout两倍的可用空间.但我得到了相反的结果.ScrollView小于LinearLayout.而如果我为ScrollView layout_weight="1"和LinearLayout设置layout_weight="2",则ScrollView大于LinearLayou.

这怎么可能??

San*_*r V 24

因为你使用的重量得到逆match_parentlayout_height.当总和大于时,权重用于分配剩余的空白空间或带走空间LinearLayout.将你的高度设置为0dip它将起作用.

即,设置layout_height = "0dip"ScrollView内部和内部LinearLayout.

参考:

layout_weight与Android布局的使用