Question

J'ai un groupe de radio que je ne souhaite pas utiliser pour pouvoir sélectionner l'un des boutons tant qu'une case à cocher particulière n'est pas sélectionnée dans mon application. Si la case à cocher est non cochée, cela désactive le groupe radio. Comment puis-je faire cela.

Était-ce utile?

La solution

La vraie astuce consiste à parcourir tous les enfants (dans ce cas: CheckBox) et appelez-le 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);
}

Autres conseils

Vous pouvez utiliser le oncheckedchangeListener sur votre case à cocher et utilisez la méthode dépensé sur votre radiogroup.

Meilleurs voeux, Tim

Si vous n'avez que quelques boutons radio, le meilleur moyen serait de setclickable (faux) pour tous les enfants

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

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

Prenez des mesures en fonction de l'état de la case à cocher et définissez le radiogroup en conséquence. En supposant que vous avez un rayon radio nommé radiogroup, vous pouvez activer ou désactiver le radiogroup par

radiogroup.setEnabled (true);

Ajoutez un oncheckedChangeListener () à votre case à cocher.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top