Come disabilitare un radiogruppo fino al controllo della casella di controllo
-
28-10-2019 - |
Domanda
Ho un gruppo di radio che non voglio che l'utente sia in grado di selezionare nessuno dei pulsanti fino a quando non viene selezionata una particolare casella di controllo nella mia app. Se la casella di controllo è distratta, questo disabilita il radiolino. Come procedo a fare questo.
Soluzione
Il vero trucco è quello di passare attraverso tutti i bambini (in questo caso: CheckBox
) e chiamalo setEnabled(boolean)
Qualcosa del genere dovrebbe fare il trucco:
//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);
}
Altri suggerimenti
Puoi usare il sugli scangelistener Nella casella di controllo e usa il metodo Setabled sul tuo radiogruppo.
I migliori auguri, Tim
Se hai solo pochi pulsanti di radio, un modo migliore sarebbe quello di setClickble (false) per tutti i bambini
radiobutton1.setClickable(false);
radiobutton2.setClickable(false);
radiobutton3.setClickable(false);
Il radiogruppo non può essere disabilitato direttamente, dobbiamo eseguire il tiro attraverso il pulsante di opzione e impostarlo abilitato come falso.
Intraprendere azioni secondo lo stato della casella di controllo e impostare il radiogruppo di conseguenza. Supponendo che tu abbia un radiocarigio chiamato radiogruppo, è possibile abilitare o disabilitare il radiogruppo
radiogroup.setEnabled (true);
Aggiungi un po 'di taglio () alla casella di controllo.