ToggleButton
. A partir de la versión 4.0 de Android contamos con un nuevo tipo de botón de estado Switch
con control deslizante.Botón de estado estándar. |
Botón de estado con control deslizante (Android 4.0+). |
ToggleButton
y Switch
son subclases de la clase CompoundButton
por lo que funcionan de manera similar.Respondiendo al evento clic.
Cuando el usuario pulsa sobre un botón de estado, el objeto asociadoToggleButton
o Switch
recibe el evento clic. Para definir el método encargado de gestionar dicho evento, podemos utilizar el atributo android:onClick
de un elemento determinado. El valor para este atributo será el nombre del método al que queremos que se llame cuando el usuario pulsa sobre el botón. Será la actividad asociada a la plantilla la encargada de implementar dicho método. Por ejemplo:<ToggleButton
android:id="@+id/togglebutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="Vibrate on"
android:textOff="Vibrate off"
android:onClick="onToggleClicked"/>
Desde la actividad implementamos el método onToggleClicked
:public void onToggleClicked(View view) {
// on vale true si el botón se encuentra activo.
// on vale false si el botón no se encuentra activo.
boolean on = ((ToggleButton) view).isChecked();
if (on) {
// Habilitar vibración.
} else {
// Inhabilitar vibración.
}
}
El método especificado en el atributo
android:onClick
debe tener la misma signatura que la del ejemplo, es decir, que debe cumplir los siguientes requisitos:- Ser público.
- Devolver
void
. - Definir un único argumento de tipo
View
(la vista sobre la que se pulsa).
Truco. Si necesitamos cambiar el estado del botón en tiempo de ejecución, podemos hacerlo con los métodos
setChecked(boolean)
o toggle()
.Usando la interfaz OnCheckedChangeListener
Podemos gestionar el evento clic de un botón de estado desde nuestro código en tiempo de ejecución. Para ello, tendremos que acceder a su instancia ToggleButton
o Switch
y asignarle una implementación de la interfaz CompoundButton.OnCheckedChangeListener
a través del método setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener)
:ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// El botón está activo.
} else {
// El botón está inactivo.
}
}
});
No hay comentarios:
Publicar un comentario