webentwicklung-frage-antwort-db.com.de

So deaktivieren Sie eine Radiogruppe, bis das Kontrollkästchen aktiviert ist

Ich habe eine Funkgruppe, bei der ich keine der Schaltflächen auswählen darf, bis ein bestimmtes Kontrollkästchen in meiner App ausgewählt ist. Wenn das Kontrollkästchen deaktiviert ist, wird die Funkgruppe deaktiviert. Wie mache ich das?.

29
W0lf7

Der eigentliche Trick besteht darin, alle untergeordneten Ansichten zu durchlaufen (in diesem Fall: CheckBox) und es ist setEnabled(boolean) aufzurufen.

So etwas sollte den Trick tun:

//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

Sie können den onCheckedChangeListener in Ihrer CheckBox und die Methode setEnabled in Ihrer Radiogruppe verwenden.

Beste Wünsche, Tim

1
Tim

RadioGroup kann nicht direkt deaktiviert werden. Wir müssen das Optionsfeld durchlaufen und es auf "false" setzen.

0
Kamal Selvaraj

Wenn Sie nur ein paar Optionsfelder haben, ist es besser, setClickable (false) für alle untergeordneten Elemente festzulegen

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