许多答案都指出:当我们使用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>
答案 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会给它们相等的空间,你可以根据你的要求进行修改