布局文件
<?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声明,我得到了下面的第一个草图。我不是在寻找前三个中的任何一个,而是寻找第四个。
答案 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>