RadioButton y RadioGroup

Explicación del concepto de RadioButton y RadioGroup.

Fuente: developer.android
Fuente: developer.android

DEFINICIÓN

RadioButton

Hereda de:

Herencia de RadioButton

Un RadioButton es un botón que tiene dos estados, puede encontrarse marcado (checked) o desmarcado (unchecked).

Cuando el botón se encuentra desmarcado, el usuario puede marcarlo, sin embargo, al contrario que los CheckBox, el usuario no puede desmarcarlo una vez marcado.

Los RadioButtons suelen utilizarse dentro de un RadioGroup.

RadioGroup

Hereda de LinearLayout.

Esta clase se utiliza para crear un grupo de RadioButtons mutuamente excluyentes, es decir, solo puede haber uno de ellos en el estado de marcado.

Esto significa que si el usuario marca uno de ellos, el resto, automáticamente pasan al estado de desmarcados.

Mientras que no se puede desmarcar un RadioButton concreto, si que se puede limpiar un RadioGroup para eliminar el estado de marcado de sus RadioButtons.

La selección es identificada mediante el atributo android:id de cada uno de los RadioButton.

USO DESDE XML

Como hemos visto, un RadioGroup contiene varios RadioButtons. Por este motivo, podemos crear un RadioGroup de la siguiente manera:

IMPORTANTE

Si no asigno un android:id a cada uno de los RadioButtons, podré marcar todas las opciones pues el sistema no tiene forma de identificar si lo están o no.

ATRIBUTOS RADIOBUTTON

android:button

Heredada de CompoundButton.

Fuente: developer.android

Define el drawable que se va a utilizar en el gráfico del botón.

android:buttonTint

Hereda de CompoundButton.

Color que se debe aplicar al drawable del botón.

android:buttonTintMode

Hereda de CompoundButton.

Define el modo en el que se va a aplicar ese "tinte" al drawable. Puede ser uno de varios valores constantes que se pueden ver definidos en el siguiente enlace:

Fuente: developer.android

ATRIBUTOS RADIOGROUP

android:checkedButton

Define el id del RadioButton que se encuentra marcado por defecto. No es obligatorio puesto que puede no haber ninguno marcado inicialmente.

PROGRAMAR EVENTOS DESDE CÓDIGO

El caso de los RadioButton es muy similar al caso de los Chips que vimos en la página anterior. Por ese motivo sólo se va a presentar el código:

PERSONALIZACIÓN

Vamos a utilizar los conocimientos que tenemos hasta ahora para desarrollar un RadioGroup personalizado con una estética muy diferente a la habitual:

RadioGroup personalizado

Para ello vamos a utilizar conocimientos adquiridos a lo largo del curso:

Listas de estados

Como vemos, el RadioButton que se encuentra en el estado de checked tiene un color diferente al resto, esto lo hacemos con listas de estados como ya hicimos en la página anterior con los Chips.

Para este ejercicio vamos a necesitar crear 4 archivos drawables por cada RadioButton:

  • Un archivo drawable que contenga el icono. (ic_ejemplo)

  • Un archivo drawable que contenga la lista de estados. (rb_ejemplo_bg)

  • Un archivo drawable que contenga el estado cuando está checked (rb_ejemplo_on)

  • Un archivo drawable que contenga el estado cuando está unchecked (rb_ejemplo_off)

Empecemos:

Iconos

Los iconos se encuentran en el siguiente enlace y luego se añaden a Android Studio como un nuevo drawable con el nombre que queramos:

Fuente: Material Design Icons

Listas de estados

Las listas de estados las creamos con un nuevo drawable que tenga de root el elemento selector:

Drawables para cada estado

Por último creamos los drawables con los estados checked y unchecked de cada botón. En estos utilizaremos de root element un layer-list:

Last updated