Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Botones de selección

Los botones de selección permiten al usuario seleccionar una opción de un conjunto. Debes usar botones de selección para conjuntos opcionales que son mutuamente excluyentes si crees que el usuario necesita ver todas las opciones disponibles una al lado de la otra. Si no es necesario mostrar todas las opciones juntas, usa un ícono giratorio en su lugar.

Para crear cada opción del botón de selección, crea un RadioButton en tu diseño. Sin embargo, debido a que los botones de selección son mutuamente excluyentes, debes agruparlos dentro de un RadioGroup. Cuando los agrupas, el sistema garantiza que solo se pueda seleccionar un botón a la vez.

Las clases clave son las siguientes:

Cómo responder a eventos de clic

Cuando el usuario selecciona uno de los botones de selección, el objeto RadioButton correspondiente recibe un evento de clic.

Para definir el controlador de eventos de clic correspondiente a un botón, agrega el atributo android:onClick al elemento <RadioButton> en tu diseño XML. El valor de este atributo debe ser el nombre del método al que deseas llamar en respuesta a un evento de clic. La Activity que aloja el diseño debe implementar el método correspondiente.

Por ejemplo, estos son un par de objetos RadioButton:

<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <RadioButton android:id="@+id/radio_pirates"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pirates"
        android:onClick="onRadioButtonClicked"/>
    <RadioButton android:id="@+id/radio_ninjas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ninjas"
        android:onClick="onRadioButtonClicked"/>
</RadioGroup>

Nota: RadioGroup es una subclase de LinearLayout que tiene una orientación vertical de forma predeterminada.

Dentro de la Activity que aloja este diseño, el siguiente método procesa el evento de clic para ambos botones de selección:

Kotlin

fun onRadioButtonClicked(view: View) {
    if (view is RadioButton) {
        // Is the button now checked?
        val checked = view.isChecked

        // Check which radio button was clicked
        when (view.getId()) {
            R.id.radio_pirates ->
                if (checked) {
                    // Pirates are the best
                }
            R.id.radio_ninjas ->
                if (checked) {
                    // Ninjas rule
                }
        }
    }
}

Java

public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radio_pirates:
            if (checked)
                // Pirates are the best
            break;
        case R.id.radio_ninjas:
            if (checked)
                // Ninjas rule
            break;
    }
}

El método que declares en el atributo android:onClick debe tener una firma que refleje el ejemplo de arriba de forma exacta. Específicamente, el método debe cumplir con lo siguiente:

  • Ser público
  • Mostrarse nulo
  • Definir una View como su único parámetro (que será la View en la que se hizo clic)

Sugerencia: Si necesitas cambiar el estado del botón de selección, usa el método setChecked(boolean) o toggle().