Siéntete libre de compartir nuestros tutoriales y códigos con tus amigos, apóyanos para aumentar esta comunidad.
Solución:
Puedes simular eso RadioGroup
para que parezca que solo tienes uno. Por ejemplo tienes rg1
y rg2
(RadioGroups
con la orientación establecida en vertical
(las dos columnas)). Para configurar esos RadioGroups
:
rg1 = (RadioGroup) findViewById(R.id.radioGroup1);
rg2 = (RadioGroup) findViewById(R.id.radioGroup2);
rg1.clearCheck(); // this is so we can start fresh, with no selection on both RadioGroups
rg2.clearCheck();
rg1.setOnCheckedChangeListener(listener1);
rg2.setOnCheckedChangeListener(listener2);
Para seleccionar solo uno RadioButton
en esos RadioGroups
los oyentes de arriba serán:
private OnCheckedChangeListener listener1 = new OnCheckedChangeListener()
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
if (checkedId != -1)
rg2.setOnCheckedChangeListener(null); // remove the listener before clearing so we don't throw that stackoverflow exception(like Vladimir Volodin pointed out)
rg2.clearCheck(); // clear the second RadioGroup!
rg2.setOnCheckedChangeListener(listener2); //reset the listener
Log.e("XXX2", "do the work");
;
private OnCheckedChangeListener listener2 = new OnCheckedChangeListener()
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
if (checkedId != -1)
rg1.setOnCheckedChangeListener(null);
rg1.clearCheck();
rg1.setOnCheckedChangeListener(listener1);
Log.e("XXX2", "do the work");
;
Para conseguir el cheque RadioButton
desde el RadioGroups
Podrías hacerlo:
int chkId1 = rg1.getCheckedRadioButtonId();
int chkId2 = rg2.getCheckedRadioButtonId();
int realCheck = chkId1 == -1 ? chkId2 : chkId1;
Si usa el check()
método del RadioGroup
tienes que recordar llamar clearCheck()
en el otro Radiogroup
.
El RadioGroup se extiende desde LinearLayout.
el linearlayout no puede hacerlo, por lo que RadioGroup no puede hacerlo.
¿Por qué no implementarlo por sí mismo?
Utilice RelativeLayout para diseñar la vista secundaria. Y registre el estado de la vista secundaria. use setLevel para controlar los estados.
¡Buena suerte para usted!.
Si el diseño no es complicado, la mejor manera es utilizar Single RelativeLayout en lugar de múltiples diseños lineales.
A continuación se muestra el código con 2 filas. La primera fila tiene 3 columnas. Segunda fila una columna.
Te mostramos comentarios y puntuaciones
Recuerda que puedes dar visibilidad a este tutorial si lograste el éxito.