在两个线性布局中使用时,无法取消选中radiobutton

时间:2018-04-09 06:57:04

标签: android xml radio-button radio-group

我使用两个线性布局在一行中显示两行单选按钮3,在另一行中显示3行。我搜索并发现我们应该使用radio group。但在使用无线电组后,我也无法在选择单选按钮时取消选中单选按钮

<RadioGroup
    android:id="@+id/payment_mode"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="18dp"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RadioButton
            style="@style/LinkButton"
            android:id="@+id/cash"
            android:text="CASH" />

        <RadioButton
            style="@style/LinkButton"
            android:id="@+id/card"
            android:text="CARD" />

        <RadioButton
            style="@style/LinkButton"
            android:id="@+id/pay_tm"
            android:text="PAYTM" />

    </LinearLayout>

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

        <RadioButton
            style="@style/LinkButton"
            android:id="@+id/bank"
            android:text="BANK" />

        <RadioButton
            style="@style/LinkButton"
            android:id="@+id/cc_av"
            android:text="CC-AV" />

        <RadioButton
            style="@style/LinkButton"
            android:id="@+id/credit"
            android:text="CREDIT" />

    </LinearLayout>

</RadioGroup>

4 个答案:

答案 0 :(得分:0)

  

您无法在RadioGroup内使用任何布局。你只能使用   RadioButton,否则RadioButton将无效。 RadioButton   应该是RadioGroup的直接孩子。

您的问题将通过将radioGroup的方向更改为水平来解决。 更多信息here

答案 1 :(得分:0)

来自开发者网站

  

要创建每个单选按钮选项,请在您的。中创建一个RadioButton   布局。但是,因为单选按钮是互斥的,所以   必须将它们组合在一个RadioGroup中。通过分组他们   在一起,系统确保只有一个单选按钮   一次选择。

因此单选按钮的直接父级必须是RadioGroup,在布局文件中,直接父级是LinearLayout。删除LinearLayout并将radiobuttons直接放在RadioGroup下。

答案 2 :(得分:0)

尝试更改此布局并执行点击操作,请参阅此link

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <RadioGroup
            android:id="@+id/payment_mode"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="18dp"
            android:orientation="vertical">

            <RadioButton
                android:id="@+id/cash"
                style="@style/LinkButton"

                android:text="CASH" />

            <RadioButton
                android:id="@+id/card"
                style="@style/LinkButton"
                android:text="CARD" />

            <RadioButton
                android:id="@+id/pay_tm"
                style="@style/LinkButton"
                android:text="PAYTM" />

            <RadioButton
                android:id="@+id/bank"
                style="@style/LinkButton"
                android:text="BANK" />


            <RadioButton
                android:id="@+id/cc_av"
                style="@style/LinkButton"
                android:text="CC-AV" />


            <RadioButton
                android:id="@+id/credit"
                style="@style/LinkButton"
                android:text="CREDIT" />

        </RadioGroup>
    </LinearLayout>

答案 3 :(得分:0)

对于我的回答,您无需使用广播组。您只需在每个单选按钮上设置单击侦听器即可。例如。

RadioButton tempRadioButton;   //global variable.
radioButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (tempRadioButton != null){
                        tempRadioButton.setChecked(false);
                    }
                    tempRadioButton = (RadioButton) view;
                }
            });

您还可以使用此方法在列表视图或回收站视图的每个项目上设置单选按钮。