Android单选按钮在同一个广播组

时间:2017-01-08 12:13:41

标签: android

有没有办法在同一个无线电组下双向垂直和水平设置单选按钮。像两个分开的行?喜欢这张图片..

https://i.stack.imgur.com/4l3OW.png

        <RadioGroup
    android:id="@+id/radiotheme"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="10dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="2">

        <RadioButton
            android:id="@+id/radiothemeblack"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textSize="15sp"

            android:text="@string/theme_black" />

        <RadioButton
            android:id="@+id/radiothemewhite"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:textSize="15sp"
            android:text="@string/theme_white" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="2">

    <RadioButton
        android:id="@+id/radiothemepink"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:textSize="15sp"
        android:text="@string/theme_pink" />

    <RadioButton
        android:id="@+id/radiothemeblue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:textSize="15sp"
        android:text="@string/theme_blue" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="2">

    <RadioButton
        android:id="@+id/radiothemegreen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:textSize="15sp"
        android:text="@string/theme_green" />

        <RadioButton
            android:id="@+id/radiothemebiolet"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:textSize="15sp"
            android:text="@string/theme_green" />

    </LinearLayout>

</RadioGroup>

我通过xml尝试这种方式。但问题在这里所有按钮都可以同时选择。我如何正常工作?

1 个答案:

答案 0 :(得分:1)

据我所知,你不能通过xml做到这一点,试试这个。

final RadioGroup radioGroup1 = (RadioGroup) findViewById(R.id.question1);
final RadioGroup radioGroup2 = (RadioGroup) findViewById(R.id.question2);

radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                if (i != -1)
                    radioGroup2.check(-1);
            }
        });


 radioGroup2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                if (i != -1)
                    radioGroup1.check(-1);
            }
        });

使用这个xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RadioGroup
        android:id="@+id/question1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical">

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="RadioButton" />

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

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

    <RadioGroup
        android:id="@+id/question2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@+id/question1"
        android:layout_toRightOf="@+id/question1"
        android:orientation="vertical">

        <RadioButton
            android:id="@+id/radio3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="RadioButton" />

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

        <RadioButton
            android:id="@+id/radio5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="RadioButton" />
    </RadioGroup>
</RelativeLayout>