在RelativeLayout中将layout_width(height)设置为0dp

时间:2013-06-28 16:32:20

标签: android relativelayout

我知道在LinearLayout中将layout_width(或height)设置为0dp并结合layout_weight的效果,正如在这个问题中所回答:

Why is 0dp considered a performance enhancement?

但是,在Android开发者指南的示例代码中

http://developer.android.com/guide/topics/ui/layout/relative.html

为什么他们将Spinner的layout_width设置为0dp?那究竟是什么原因或背后的伎俩呢?我的猜测是Spinner的水平位置已经可以由相对属性确定,因此它们只是将其指定为0dp,原因与上述情况相同。但是,我似乎无法找到关于此的实际文档,所以它仍然有点令人困惑。

3 个答案:

答案 0 :(得分:3)

当子视图锚定在两侧(在RelativeLayout中)时,将忽略宽度。在这种情况下,由于

Spinner 知道它的宽度
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/times"

答案 1 :(得分:1)

我在几个项目中也看过这个技巧,原因与LinearLayout中为什么用“weight”完全相同,但这里的关键属性是:android:layout_toLeftOf="@+id/times"它完全相同的技巧因为“权重”会与线性布局有关,所以这是一种说法,将所有空间从android:layout_alignParentLeft="true"保留到android:layout_toLeftOf="@+id/times",而无需对任何特定宽度进行硬编码......

问候!

答案 2 :(得分:-1)

我们在使用layout_weight时使用0dp,因为它会忽略该属性,它将按照layout_weight进行..