我知道在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,原因与上述情况相同。但是,我似乎无法找到关于此的实际文档,所以它仍然有点令人困惑。
答案 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进行..