evento - group radio android
Cómo deshabilitar un RadioGroup hasta que se marque la casilla de verificación (5)
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 determinada en mi aplicación. Si la casilla de verificación no está marcada, esto desactiva el grupo de radio. Cómo voy a hacer esto.
Puede usar el onCheckedChangeListener en su CheckBox y usar el método setEnabled en su RadioGroup.
Mis mejores deseos, Tim
RadioGroup no se puede deshabilitar directamente, tenemos que recorrer el botón de opción y configurarlo como falso.
Realice las acciones según el estado de la casilla de verificación y configure el grupo de radio según corresponda. Suponiendo que tiene un grupo de radio llamado radiogrupo, puede habilitar o deshabilitar el grupo de radio
radiogroup.setEnabled (true);
Agregue un OnCheckedChangeListener () a su casilla de verificación.
Si solo tiene unos botones de opción, una mejor forma sería establecer Click (false) para todos los elementos secundarios.
radiobutton1.setClickable(false);
radiobutton2.setClickable(false);
radiobutton3.setClickable(false);
El verdadero truco es recorrer todas las vistas de los niños (en este caso, CheckBox
) y llamarlo a 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);
}