RadioGroup允许选择多个单选按钮

时间:2013-06-17 22:09:12

标签: android

我在XML中定义了一个RadioGroup,它有两个RadioButtons。但是,我需要在按钮本身的左侧显示标签,标签左对齐,按钮右对齐。为此,我使用了包含TextView和没有text的RadioButton的RelativeLayout。这大致与布局相似:

<RadioGroup android:id="@+id/foo" android:layout_height="wrap_content" android:layout_width="match_parent">
    <RelativeLayout android:layout_height="wrap_content" android:layout_width="match_parent">
        <TextView android:text="@string/bar_one" android:layout_alignParentLeft="true" android:layout_height="wrap_content" android:layout_width="wrap_content" />
        <RadioButton android:id="@+id/bar1" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    </RelativeLayout>
    ...
</RadioGroup>

这显示了我期望的方式,但我发现RadioGroup允许选择多个RadioButton。当我删除RelativeLayouts和TextViews,因此RadioButtons在RadioGroup下嵌套直接时,只能选择一个。有没有办法包装我的RadioButtons但是同时选择了多个?

如果没有,是否有更好的方法来完成我追求的样式?

1 个答案:

答案 0 :(得分:2)

用完整的xml告诉你更容易,因为你只显示一个RadioButton因此无法知道另一个属性是什么,或者屏幕截图会有所帮助。但您可以使用LinearLayout并执行类似

的操作
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
...>
    <RadioGroup
     ...>
     <TextView
      .../>
     <RadioButton
     .../>
    <TextView
      .../>
    <RadioButton
    .../>
</RadioGroup>
</LinearLayout

但在再次阅读这个问题后,我想你可能会想要像

这样的东西
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" 
    android:layout_width="match_parent">

    <RadioGroup 
        android:id="@+id/foo" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:orientation="vertical"
        android:layout_alignParentRight="true" >

        <RadioButton android:id="@+id/bar1" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/bar2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RadioGroup>

    <TextView android:id="@+id/textView1"
        android:text="Text 1" 
        android:layout_alignParentLeft="true" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:layout_alignBottom="@+id/bar1"/>

    <TextView android:text="Text 2" 
        android:layout_alignParentLeft="true" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_alignBottom="@+id/foo" />      
</RelativeLayout>

您可能需要调整一些padding和/或margin或进行其他调整以获得您想要的效果,但我认为这会让您接近。如果我误解了,请告诉我