Cómo deshabilitar un radiogrupo hasta que se verifique la casilla de verificación
-
28-10-2019 - |
Pregunta
Tengo un grupo de radio que no quiero que el usuario pueda seleccionar ninguno de los botones hasta que se seleccione una casilla de verificación en particular dentro de mi aplicación. Si la casilla de verificación está desactivada, esto deshabilita el grupo de radio. Cómo voy a hacer esto.
Solución
El verdadero truco es recorrer todos los niños (en este caso: CheckBox
) y llamarlo es setEnabled(boolean)
Algo como esto debería hacer el truco:
//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);
}
Otros consejos
Puedes usar el oncheckedchangelistener en su casilla de verificación y use el método setenable en su radiogrupo.
Mis mejores deseos, Tim
Si solo tiene unos pocos botones de radio, una mejor manera sería setClickable (falso) para todos los niños
radiobutton1.setClickable(false);
radiobutton2.setClickable(false);
radiobutton3.setClickable(false);
Radiogrup no se puede deshabilitar directamente, tenemos que recorrer el botón de radio y establecerlo habilitado como falso.
Tome medidas de acuerdo con el estado de la casilla de verificación y establezca el radiogrupo en consecuencia. Suponiendo que tiene un grupo de radio llamado radiogrupo que puede habilitar o deshabilitar el radiogrupo por
Radiogrup.SetEnabled (verdadero);
Agregue un OnCheckedChangeListener () a su casilla de verificación.