17

我正在使用带有 TableRows 的 TableLayout 作为我的主要活动。

TableLayout 内部是一个 Radio Group,其中包含 2 个 Radio Button 在 Activity 内(Radio Group 在表格行内)。我希望能够将最右侧的单选按钮与右边缘屏幕对齐,因此“间隙”位于左侧单选按钮和右侧按钮之间(而不是在右侧单选按钮之后)。IE

所以而不是拥有
| (x) (x) 差距 |
我将有
|(x) 间隙 (x)|

其中 (x) 是单选按钮和 | 是屏幕的边缘

我可以使用重力(center_horizo​​​​ntal)将两个按钮放在中间(即|间隙(x)(x)间隙|)但是我似乎无法按照我之前所说的方式拆分它们

4

4 回答 4

34

您只需要在屏幕上水平均匀分布任意数量的按钮:

  1. RadioGroup 必须有 android:orientation="horizontal"& android:layout_width="fill_parent"
  2. 每个单选按钮都必须有 android:layout_weight="1",除了最右边的按钮(使其在屏幕的右边缘对齐)!

横向截图

这花了我几个小时才弄清楚。

这是一些示例代码,带有两个文本标签和屏幕的左右边缘,用于调查应用程序。

<RadioGroup
    android:id="@+id/radio_group"
    android:orientation="horizontal"
    android:layout_below="@id/question" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:visibility="gone"
>
    <RadioButton
        android:id="@+id/strong_disagree_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="1"
    />
    <RadioButton
        android:id="@+id/disagree_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/disagree"
    />
    <RadioButton
        android:id="@+id/neutral_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/neutral"
    />
    <RadioButton
        android:id="@+id/agree_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/agree"
    />
    <RadioButton
        android:id="@+id/strong_agree_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="5"
    />
</RadioGroup>
<TextView
    android:id="@+id/disagree_label"
    android:text="@string/strongly_disagree_txt"
    android:layout_below="@id/radio_group" 
    style="@style/TextAppearance"
    android:visibility="gone"
    />
<TextView
    android:id="@+id/agree_label"
    android:text="@string/strongly_agree_txt"
    android:layout_below="@id/radio_group" 
    android:layout_alignParentRight="true" 
    style="@style/TextAppearance"
    android:layout_width="wrap_content"
    android:visibility="gone"
    />
于 2011-04-30T13:51:04.637 回答
9

找到了我的解决方案。重量和重力的组合并去除边距。单选组可以有 layout_width="fill_parent"。每个单选按钮应该有 layout_weight="1",但是仍然必须指定每个单选按钮的 layout_width 以覆盖默认的“37”,我猜这是默认的单选按钮图像宽度。

        <RadioGroup android:id="@+id/overall"
        android:layout_width="fill_parent" android:layout_height="80dp"
        android:gravity="center"
        android:orientation="horizontal">

第一个按钮应该有:

                android:layout_weight="1"
            android:layout_gravity="center|left"

最后一个按钮应该有:

            android:layout_gravity="center|right"

注意:所有按钮都有 layout_gravioty 设置,但最右边的按钮没有 layout_weight 设置!

于 2011-01-19T23:00:14.637 回答
0

你有没有找到解决这个问题的方法?我的中间解决方案可能会有所帮助,但这不是我的全部情况。我已经能够通过设置特定的宽度来做到这一点,但这不允许视图调整大小以适应屏幕宽度:

    <RelativeLayout  
    android:id="@+id/overall_layout"
    android:layout_width="290dp" android:layout_height="wrap_content">

    <RadioGroup android:id="@+id/overall"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:orientation="horizontal">
        <RadioButton android:id="@+id/overall_1" android:tag="1"
            android:button="@drawable/radio_1"
            android:layout_width="50dp"
            android:layout_marginRight="10dp"
            android:layout_height="wrap_content"></RadioButton>
        <RadioButton android:id="@+id/overall_2" android:tag="2"
            android:button="@drawable/radio_2"
            android:layout_width="50dp"
            android:layout_marginRight="10dp"
            android:layout_height="wrap_content"></RadioButton>
        <RadioButton android:id="@+id/overall_3" android:tag="3"
            android:button="@drawable/radio_3"
            android:layout_width="50dp"
            android:layout_marginRight="10dp"
            android:layout_height="wrap_content"></RadioButton>
        <RadioButton android:id="@+id/overall_4" android:tag="4"
            android:button="@drawable/radio_4"
            android:layout_width="50dp"
            android:layout_marginRight="10dp"
            android:layout_height="wrap_content"></RadioButton>
        <RadioButton android:id="@+id/overall_5" android:tag="5"
            android:button="@drawable/radio_5"
            android:layout_width="50dp"
            android:layout_height="wrap_content"></RadioButton>
    </RadioGroup>
    <TextView android:text="left" android:id="@+id/left"
        android:layout_below="@id/overall"
        android:layout_alignParentLeft="true"
        android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
    <TextView android:text="right" android:id="@+id/right"
        android:layout_below="@id/overall"
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
    </RelativeLayout>

请注意,最后一个按钮上没有边距。

我试图在一个单选组中有 5 个自定义按钮,第一个左对齐和最后一个右对齐。这些按钮正好是 50 像素宽,我不希望有任何文本与按钮单独关联。下面的 2 个文本在相对布局中左右对齐。使用“layout_gravity”没有任何效果,“layout_weight”会在每个按钮的右侧添加填充,这会导致最右侧的按钮不再对齐。

对此非常抓狂。

于 2011-01-19T20:23:05.350 回答
0

如果我理解你的问题,你也可以在 RadioGroup 中尝试下一个代码:

<ToggleButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<View
    android:id="@+id/view1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

<ToggleButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
于 2013-01-29T09:32:35.437 回答