Невозможно снять радиокнопку при использовании внутри двух линейных макетов

Я использую два линейных макета для отображения двух строк переключателя 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>

person Community    schedule 09.04.2018    source источник
comment
Пожалуйста, добавьте свой код   -  person hasan_shaikh    schedule 09.04.2018


Ответы (4)


С сайта разработчиков

Чтобы создать каждый параметр переключателя, создайте RadioButton в макете. Однако, поскольку переключатели являются взаимоисключающими, вы должны сгруппировать их вместе внутри RadioGroup. Группируя их вместе, система гарантирует, что одновременно может быть выбран только один переключатель.

Таким образом, прямым родителем переключателя должен быть RadioGroup , в вашем файле макета прямым родителем является LinearLayout. Удалите LinearLayout и поместите радиокнопки непосредственно под RadioGroup.

person Dishonered    schedule 09.04.2018

Вы не можете использовать какой-либо макет внутри RadioGroup. Вы можете использовать только RadioButton, иначе RadioButton не будет работать. RadioButton должен быть непосредственным потомком RadioGroup.

Ваша проблема будет решена путем изменения ориентации радиогруппы на горизонтальную. Подробнее здесь

person Shalu T D    schedule 09.04.2018

Для моего ответа вам не нужно использовать радиогруппу. Вам просто нужно установить прослушиватель кликов на каждую радиокнопку. Например.

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

Вы также можете использовать этот метод, чтобы установить переключатели для каждого элемента представления списка или просмотра повторного использования.

person Tavinder Singh    schedule 09.04.2018