Commutatore Xamarin.Android

Il Switch widget (illustrato di seguito) consente a un utente di passare da due stati, ad esempio ON o OFF. Il Switch valore predefinito è OFF. Il widget è illustrato di seguito sia negli stati ON che OFF:

Screenshot di un widget Switch negli stati OFF e ON

Creazione di un commutatore

Per creare un'opzione, è sufficiente dichiarare un Switch elemento in XML come indicato di seguito:

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

In questo modo viene creato un commutatore di base, come illustrato di seguito:

Screenshot dell'app demo che mostra un interruttore nello stato OFF

Modifica dei valori predefiniti

Sia il testo visualizzato dal controllo per gli stati ON che OFF e il valore predefinito sono configurabili. Ad esempio, per impostare l'impostazione predefinita su ON e leggere NO/YES anziché OFF/ON, è possibile impostare gli checkedattributi , textOne textOff nel codice XML seguente.

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

Specificare un titolo

Il Switch widget supporta anche l'inclusione di un'etichetta di testo impostando l'attributo text come indicato di seguito:

<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" />

Questo markup produce lo screenshot seguente in fase di esecuzione:

Screenshot dell'app demo con testo che precede orizzontalmente il widget Switch

Quando il valore di un Switchoggetto viene modificato, genera un CheckedChange evento. Ad esempio, nel codice seguente viene acquisito questo evento e viene presentato un widget con un Toast messaggio in base al isChecked valore di Switch, che viene passato al gestore eventi come parte dell'argomento 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 ();
};