Utilizaremos el elemento
RadioButton
para añadir un botón radial a nuestra plantilla. Además, tendremos que definir los botones dentro de un elemento RadioGroup
si queremos que la selección sea excluyente.Respondiendo al evento clic.
Cuando el usuario pulsa sobre un botón radial, el objeto asociado recibe el evento clic. Para asociar el evento con la ejecución de un método, usaremos el atributoandroid:onClick
de un elemento RadioButton
. El valor especificado para este atributo se corresponderá con el nombre del método implementado por la actividad asociada a la plantilla. En el siguiente ejemplo contamos con dos botones radiales que llaman al método onRadioButtonClicked
cuando pulsamos sobre cualquiera de ellos:<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_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. La clase RadioGroup
es una subclase de LinearLayout
donde por defecto la distribución de sus elementos es vertical.Dentro de la actividad tendremos implementado el método
onRadioButtonClicked
:public void onRadioButtonClicked(View view) {
// checked vale true si se trata de la opción seleccionada por el usuario.
// checked vale false la opción no ha sido seleccionada por el usuario.
boolean checked = ((RadioButton) view).isChecked();
// Comprobamos qué botón ha sido pulsado.
switch(view.getId()) {
case R.id.radio_pirates:
if (checked)
// Los piratas son los mejores.
break;
case R.id.radio_ninjas:
if (checked)
// Los ninjas mandan.
break;
}
}
El método asociado al atributo android:onClick
debe tener la misma signatura a la del ejemplo, es decir, debe cumplir con los siguientes requisitos:- Ser público.
- Devolver
void
. - Definir un único argumento de tipo
View
(la vista que ha sido pulsada).
Truco. Si necesitamos cambiar el valor de un botón radial en tiempo de ejecución, podemos usar los métodos
setChecked(boolean)
o toggle()
.
No hay comentarios:
Publicar un comentario