0

首先,一张图片(来自hierarchyviewer):

好按钮和坏按钮

我有两个文本长度不同的按钮,我希望它们的大小相同。在图像中,您可以看到它在顶部工作。但是,我希望我的按钮之间有一些空间,所以对于第三个和第四个按钮,我添加了 layout_margin 属性以给它们一点空间。混乱随之而来。第四个按钮保持相同大小并添加适当的边距。但是第三个按钮似乎没有在右侧添加边距,因此失去了宽度。

我认为正在发生的事情是在对齐之后应用边距,所以......实际上,我无法想出一个完全解释它的过程。

我想要的是:

  • 要了解这些东西是如何工作的 - 视图的布局对我来说似乎不直观,我无法想象达到我不会随机更改属性来修复这类事情的地步。是否有一个全面的教程可以解决细节问题?

  • 两个等长按钮,在相对布局中具有不同长度的文本,并带有边距。我需要相对布局来安排活动上的所有其他视图。

代码如下。

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    >
    <Button
        android:id="@+id/goodThis"
        android:text="Short text"
        android:background="@drawable/button_red" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"
        android:layout_alignRight="@+id/goodThat"
    />
    <Button
        android:id="@+id/goodThat"
        android:text="Longer text"
        android:background="@drawable/button_green" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"
        android:layout_below="@+id/goodThis"
    />

    <Button
        android:id="@+id/badThis"
        android:text="Short text"
        android:background="@drawable/button_red" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_below="@+id/goodThat"
        android:layout_alignParentLeft="true"
        android:layout_alignRight="@+id/badThat"
        android:layout_margin="3dp"
    />
    <Button
        android:id="@+id/badThat"
        android:text="Longer text"
        android:background="@drawable/button_green" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"
        android:layout_below="@+id/badThis"
        android:layout_margin="3dp"
    />
</RelativeLayout>
4

1 回答 1

3

为了让我的回答比我上面的评论更多地作为答案,我通过我的 RelativeLayout 经验学到了以下内容:

1) 消除前向 ID 引用。这可能会使弄清楚如何去做变得更加困难,但您可以看到,像这样解析引用将需要在运行时至少两次通过布局规范,并且可能会使事情复杂化。

2)我一般使用特定的margin/padding属性比如layout_marginTop等来获得更好的效果。您对毯子“layout_margin”的使用将第三个和第四个按钮稍微向右偏移,这可能不是您想要的外观。尝试仅使用 marginTop 将按钮隔开。

于 2012-05-18T12:03:00.930 回答