studio evento codigo agrupar activar android checkbox radio-group

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.



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); }