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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top