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?.
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);
}
Sie können den onCheckedChangeListener in Ihrer CheckBox und die Methode setEnabled in Ihrer Radiogruppe verwenden.
Beste Wünsche, Tim
RadioGroup kann nicht direkt deaktiviert werden. Wir müssen das Optionsfeld durchlaufen und es auf "false" setzen.
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);