Share via


Xamarin.Android Switch

El widget Switch (que se muestra a continuación) permite a los usuarios alternar entre dos estados, como ACTIVADO o DESACTIVADO. El valor predeterminado de Switch es DESACTIVADO. El widget se muestra a continuación en sus estados ACTIVADO y DESACTIVADO:

Capturas de pantalla de un widget Switch en estados DESACTIVADO y ACTIVADO

Creación de modificadores

Para crear un modificador, no tiene más que declarar un elemento Switch en XML de la siguiente manera:

<Switch android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

Así se crea un modificador básico como se muestra a continuación:

Captura de pantalla de la aplicación de demostración que muestra un Switch en estado DESACTIVADO

Cambio de los valores predeterminados

Tanto el texto que muestra el control para los estados ACTIVADO y DESACTIVADO como el valor predeterminado son configurables. Por ejemplo, para que el valor predeterminado de Switch sea ACTIVADO y que aparezcan NO/SÍ, en lugar de ACTIVADO/DESACTIVADO, podemos establecer los atributos checked, textOny textOff en el siguiente XML.

<Switch android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:textOn="YES"
        android:textOff="NO" />

Proporcionar un icono

El widget Switch también admite la inclusión de una etiqueta de texto estableciendo el atributo text de la siguiente manera:

<Switch android:text="Is Xamarin.Android great?"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:textOn="YES"
        android:textOff="NO" />

Este marcado genera la siguiente captura de pantalla en tiempo de ejecución:

Captura de pantalla de la aplicación de demostración con texto que precede horizontalmente al widget Switch

Cuando cambia un valor de Switch, genera un evento CheckedChange. Por ejemplo, en el siguiente código capturamos este evento y presentamos un widget Toast con un mensaje basado en el valor isChecked de Switch, que se pasa al controlador de eventos como parte del argumento de CompoundButton.CheckedChangeEventArg.

Switch s = FindViewById<Switch> (Resource.Id.monitored_switch);
           
s.CheckedChange += delegate(object sender, CompoundButton.CheckedChangeEventArgs e) {
    var toast = Toast.MakeText (this, "Your answer is " +
        (e.IsChecked ?  "correct" : "incorrect"), ToastLength.Short);
    toast.Show ();
};