android:layout_weight意外行为?

时间:2013-03-28 11:53:27

标签: android xml android-layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="5"
        android:text="Button1"
        android:textSize="20dp" >
    </Button>

    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="Button2"
        android:textSize="20dp" >
    </Button>

</LinearLayout>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="5"
        android:text="Button1"
        android:textSize="20dp" >
    </Button>

    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="Button2"
        android:textSize="20dp" >
    </Button>

</LinearLayout>

在代码版本1中 按钮1的高度是按钮2的5倍

在代码版本2中 按钮2的高度是按钮1的5倍

当android:layout_height =“0dp”被android:layout_height =“match_patent”替换时,权重被反转。 你能解释一下这种行为以及android:layout_weights如何实际工作并解释每种情况下的原因。

1 个答案:

答案 0 :(得分:2)

将Layout_weight设置为其值将指定为0的组件。这意味着它们没有自己的高度/宽度,并且占据权重指定的屏幕的百分比。