¿Cómo puedo crear un radiogrupo 2×2?
Hola, quiero crear un grupo de radio 2×2, así que logré hacer esto usando dos radiogrupos. Pero el problema es que ahora puedo seleccionar dos botones de radio en vez de uno solo. ¿Cómo puedo tratar de hacer esto?
Preciso que uso kotlin para desarrollar.
- ClassCastException: android.inputmethodservice.KeyboardView no se puede convertir a com.support.mukhtar.simplekeyboard.CustomKeyboardView android
- Kotlin: Declaración a Lambda
- Soporte autocompletado para kotlin en Eclipse-neon
- Verificación de nulidad de Kotlin si el enfoque es funcional ... ¿Cómo?
- Kotlin Expuesto no realiza transacción
Gracias !
- error: supertypes de las siguientes classs no se pueden resolver. Por favor, asegúrese de tener las dependencies requeridas en el classpath
- Usando kotlin-stdlib 1.1.51 pero se carga kotlin-runtime 1.3
- Kotlin Dokka: No se puede encontrar la tarea de Dokka en el estudio Android
- La mejor forma de manejar los retornos en el pnetworkingicado
- Mockito / Powermock no funciona como se esperaba con Kotlin
- ¿Cómo explicar este extraño comportamiento al establecer márgenes programáticamente a una vista dentro de RelativeLayout?
- Devolución de llamada al constructor con múltiples parameters
- Proveedor de matriz genérica bidimensional
Aquí tienes una pregunta muy similar: gridlayout 3×3. Porque no puedes hacer lo que quieres y quieres trivialy, debes aceptar 1 de las respuestas de la pregunta anterior. Lo que hice:
public class GRadioGroup { List<RadioButton> radios = new ArrayList<RadioButton>(); /** * Constructor, which allows you to pass number of RadioButton instances, * making a group. * * @param radios * One RadioButton or more. */ public GRadioGroup(RadioButton... radios) { super(); for (RadioButton rb : radios) { this.radios.add(rb); rb.setOnClickListener(onClick); } } /** * Constructor, which allows you to pass number of RadioButtons * represented by resource IDs, making a group. * * @param activity * Current View (or Activity) to which those RadioButtons * belong. * @param radiosIDs * One RadioButton or more. */ public GRadioGroup(View activity, int... radiosIDs) { super(); for (int radioButtonID : radiosIDs) { RadioButton rb = (RadioButton)activity.findViewById(radioButtonID); if (rb != null) { this.radios.add(rb); rb.setOnClickListener(onClick); } } } /** * This occurs everytime when one of RadioButtons is clicked, * and deselects all others in the group. */ public void addRadioButtonsToGroup(RadioButton rb){ radios.add(rb); rb.setOnClickListener(onClick); } OnClickListener onClick = new OnClickListener() { @Override public void onClick(View v) { // let's deselect all radios in group for (RadioButton rb : radios) { ViewParent p = rb.getParent(); if (p.getClass().equals(RadioGroup.class)) { // if RadioButton belongs to RadioGroup, // then deselect all radios in it RadioGroup rg = (RadioGroup) p; rg.clearCheck(); } else { // if RadioButton DOES NOT belong to RadioGroup, // just deselect it rb.setChecked(false); } } // now let's select currently clicked RadioButton if (!v.getClass().equals(RadioButton.class)) { RadioButton rb = (RadioButton) v; rb.setChecked(true); } } }; /** * ** Returns the Id of the radio button that is checked or -1 if none are checked * * @return */ public int getCheckedRadioButtonId() { int checkedId = -1; // Loop each radio button for (RadioButton rb : radios) { if (rb.isChecked()) return rb.getId(); } return checkedId; } public void setCheckedRadioButton(int pos) { // let's deselect all radios in group for (RadioButton rb : radios) { ViewParent p = rb.getParent(); if (p.getClass().equals(RadioGroup.class)) { // if RadioButton belongs to RadioGroup, // then deselect all radios in it RadioGroup rg = (RadioGroup) p; rg.clearCheck(); } else { // if RadioButton DOES NOT belong to RadioGroup, // just deselect it rb.setChecked(false); } } radios.get(pos).setChecked(true); } public void setCheckedRadioButtonDefault() { radios.get(0).setChecked(true); } @Override public void finalize() { radios.clear(); } }
Necesito agregar botones de radio programáticamente así que haga mi radiobutton.xml:
<?xml version="1.0" encoding="utf-8"?> <RadioButton xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layoutDirection="rtl" android:paddingStart="@dimen/padding_right_rests_columns" android:paddingEnd="@dimen/padding_left_rest_column" android:textAlignment="center" android:layout_centerHorizontal="true" android:gravity="center" android:layout_gravity="center" android:layout_margin="5dp"> </RadioButton>
Y para agregar (esto está en un fragment):
GRadioGroup gr = new GRadioGroup(); RadioButton radioButton = (RadioButton) getActivity().getLayoutInflater().inflate(R.layout.radiobutton, null);//initialize and set content radioButton.setText("HEY") // And all the settings you want like position ... //finally gr.addRadioButtonsToGroup(radioButton);
Desventajas? tienes que manejar el grupo de radio seleccionado con bundle o intents si la actividad / fragment / lo que sea se destruyó.
¡Espero ayudarte!
- No se puede enviar datos de formulario / múltiples con Volley
- Android onCheckedChangeListener comportamiento bizzare