Saltar al contenido

RadioGroup con dos columnas que tienen diez RadioButtons

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *