Как отключить радиогруппу, пока не установлен флажок - PullRequest
29 голосов
/ 21 февраля 2012

У меня есть радиогруппа, которую я не хочу, чтобы пользователь мог выбирать любую из кнопок, пока в моем приложении не будет установлен определенный флажок. Если флажок снят, то это отключает радиогруппу. Как мне это сделать.

Ответы [ 5 ]

61 голосов
/ 21 февраля 2012

Настоящий трюк состоит в том, чтобы перебрать все дочерние представления (в данном случае: CheckBox) и назвать его setEnabled(boolean)

Что-то вроде этого должно сработать:

//initialize the controls
final RadioGroup rg1 = (RadioGroup)findViewById(R.id.radioGroup1);
CheckBox ck1 = (CheckBox)findViewById(R.id.checkBox1);

//set setOnCheckedChangeListener()
ck1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton checkBox, boolean checked) {
        //basically, since we will set enabled state to whatever state the checkbox is
        //therefore, we will only have to setEnabled(checked)
        for(int i = 0; i < rg1.getChildCount(); i++){
            ((RadioButton)rg1.getChildAt(i)).setEnabled(checked);
        }
    }
});

//set default to false
for(int i = 0; i < rg1.getChildCount(); i++){
    ((RadioButton)rg1.getChildAt(i)).setEnabled(false);
}
1 голос
/ 03 июня 2018

Если у вас всего несколько переключателей, лучшим способом было бы установить clickable (false) для всех детей

radiobutton1.setClickable(false);
radiobutton2.setClickable(false);
radiobutton3.setClickable(false);
1 голос
/ 21 февраля 2012

Вы можете использовать onCheckedChangeListener на вашем CheckBox и использовать метод setEnabled в вашей RadioGroup.

С наилучшими пожеланиями, Тим

0 голосов
/ 08 декабря 2017

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

0 голосов
/ 21 февраля 2012

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

radiogroup.setEnabled (истина);

Добавьте OnCheckedChangeListener () к вашему флажку.

...