我尝试将layout_weight与layout_width或layout_height结合使用,但是徒劳无功

时间:2013-02-01 04:12:30

标签: android

许多答案都指出:当我们使用layout_weight时,我们设置layout_height =“0dp”,如果我们设置layout_height =“fill_parent”,结果不是我们的预期。 layout_height =“fill_parent”在OnMeasure中做了什么?谁能解释一下? 对不起。这是我第一次提问。现场如下:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:background="#a00"
        android:text="r" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="3"
        android:background="#0a0"
        android:text="g" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#00a"
        android:text="b" />
</LinearLayout>

2 个答案:

答案 0 :(得分:0)

没有任何代码,很难帮助你,但我会试一试。

首先,layout_weight是一个仅适用于LinearLayout(及其子类)的属性。如果您使用任何其他ViewGroup作为父级,它将无法工作。

其次,layout_weight用于划分UNUSED空间。在布置了所有其他孩子之后,具有layout_weight的孩子将根据权重占用剩余的可用空间。这就是人们经常建议在使用layout_height="0dp"时提供观看layout_gravity的原因。这意味着在完成其他所有操作之前,它不占用任何空间。如果你有一个孩子填写它的父母,没有任何空间可以分开。

希望这有助于您了解如何更好地使用layout_weight

答案 1 :(得分:0)

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="1"
    android:background="#a00"
    android:text="r" />

<TextView
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="1"
    android:background="#0a0"
    android:text="g" />

<TextView
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="1"
    android:background="#00a"
    android:text="b" />

现在这里的重量1会给它们相等的空间,你可以根据你的要求进行修改