web-dev-qa-db-fra.com

Comment désactiver un groupe radio jusqu'à ce que la case à cocher soit cochée

J'ai un groupe de radio que je ne veux pas que l'utilisateur puisse sélectionner aucun des boutons jusqu'à ce qu'une case particulière soit cochée dans mon application. Si la case à cocher est décochée, cela désactive le groupe radio. Comment puis-je faire cela.

29
W0lf7

Le vrai truc consiste à parcourir toutes les vues d'enfants (dans ce cas: CheckBox) et à appeler c'est setEnabled(boolean)

Quelque chose comme ça devrait faire l'affaire:

//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);
}
59
ariefbayu

Vous pouvez utiliser onCheckedChangeListener sur votre CheckBox et utiliser la méthode setEnabled sur votre RadioGroup.

Meilleurs voeux, Tim

1
Tim

RadioGroup ne peut pas être désactivé directement, nous devons parcourir le bouton radio et le définir comme faux.

0
Kamal Selvaraj

Si vous n’avez que quelques boutons radio, le mieux serait de définirClickable (false) pour tous les enfants.

radiobutton1.setClickable(false);
radiobutton2.setClickable(false);
radiobutton3.setClickable(false);
0
Kishita