这是定位小部件的正确方法,还是一个kludge?

时间:2014-06-05 18:28:24

标签: android-layout android-linearlayout android-layout-weight

在一个水平方向的LinearLayout中有两个按钮,它们看起来像这样:

enter image description here

如果我在按钮之前添加“Space”小部件,那么LinearLayout xml就是这样:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Space
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2" />

    <Button
        android:id="@+id/btnFetch"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/button_Fetch" />

    <Button
        android:id="@+id/btnCancel"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/button_Cancel" />
</LinearLayout>

...我对它的外观感到满意,按钮“右对齐”:

enter image description here

......但这是“正确”的做法吗?

更新

在模拟时,“取消”按钮的文字被包裹成两行,所以我为它添加了“行”属性并调整了重量值(而不是2,1,1,它们现在是42,29,29并且它看起来恰好在模拟时间。

1 个答案:

答案 0 :(得分:1)

我不知道Space课程,谢谢你发现了那个课程。

无论如何,不​​,我不会这样做。
我倾向于避免添加视图和视图,如果我可以用更少的实现相同的结果。

即:添加

android:layout_margin="someValueInDP"

到按钮容器 OR (作为替代方案)您可以添加它:

android:padding="someValueInDP"

记下小部件数量有助于演出

<强> [编辑]

layout_marginpadding之间的差异,众所周知(好吧,他/她应该),边距是视图/容器外的空间,而填充是一个空间INSIDE它。

只是要明确细微差别。

换句话说:设置边距将保留OUTER颜色作为“空格”背景,而填充将放大LinearLayout并且可以看到ITS颜色(如果与它所在的容器不同)。