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:

Screenshots of a Switch widget in OFF and ON states

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:

Screenshot of demo app displaying a Switch in the OFF state

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:

Screenshot of demo app with text horizontally preceding the Switch widget

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 ();
};