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.
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);
}
Vous pouvez utiliser onCheckedChangeListener sur votre CheckBox et utiliser la méthode setEnabled sur votre RadioGroup.
Meilleurs voeux, Tim
RadioGroup ne peut pas être désactivé directement, nous devons parcourir le bouton radio et le définir comme faux.
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);