4

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/MyLL"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="horizontal" >

    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

            <RadioButton
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_gravity="center"
                android:gravity="center" />

            <RadioButton
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_gravity="center"
                android:gravity="center" />

    </RadioGroup>

</LinearLayout>

导致两个 RadioButtons 平均分割水平空间。

这很好,但不是让它们向左对齐,我希望它们居中。为什么android:gravity="center"不给这个效果?

之前用 CheckBoxes 尝试过这个问题,但回复建议为每个视图(CheckBox)插入一个免费的 LinearLayout。我不能反对一个既不优雅也不高效的答案——只要它有效。

但是这个技巧不适用于 RadioButtons。RadioGroup 必须是 RadioButtons 集合的直接父级,以便它们在单击时相互取消选中。

编辑

通过上面的 XML 声明,我得到了下面的第一个草图。我不是在寻找前三个中的任何一个,而是在寻找第四个。

在此处输入图像描述

4

2 回答 2

1

好吧,很遗憾的消息,这个RadioButton类实际上是硬编码的,radio drawable 将与左侧对齐。我发现的唯一解决方案是将 RadioButton 子类化并自行处理 Drawable 的定位。

这是一个替代解决方案(RadioGroup根本不使用)

于 2013-05-22T21:35:56.583 回答
0
<style name="TextlessRadioButton" parent="android:Widget.Material.CompoundButton.RadioButton">
    <item name="android:button">@null</item>
    <item name="android:foreground">?android:listChoiceIndicatorSingle</item>
    <item name="android:foregroundGravity">center</item>
</style>
于 2017-08-27T17:35:20.473 回答