以RadioButton视图为中心

时间:2013-05-22 21:22:40

标签: android android-layout

布局文件

<?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尝试了这个问题earlier,但回复建议为每个View(CheckBox)插入一个免费的LinearLayout。我不能反驳一个既不优雅也不高效的答案 - 只要它有效。

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

修改

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

enter image description here

2 个答案:

答案 0 :(得分:1)

好的,这是一个令人遗憾的消息,RadioButton类实际上是硬编码的,无线电可绘制将与左边对齐。我发现的唯一解决方案是继承RadioButton并自己处理Drawable的定位。

Here's备用解决方案(根本不使用RadioGroup

答案 1 :(得分: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>