Xamarin.Android Switch

Switch ウィジェット (以下に示します) を使用すると、ユーザーは ON または OFF などの 2 つの状態を切り替えることができます。 Switch の既定値は OFF です。 このウィジェットの ON と OFF の両方の状態を次に示します。

OFF 状態と ON 状態の Switch ウィジェットのスクリーンショット

スイッチの作成

スイッチを作成するには、次のように XML 内で Switch 要素を宣言するだけです。

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

これにより、次のような基本的なスイッチが作成されます。

OFF 状態の Switch が表示されているデモ アプリのスクリーンショット

既定値の変更

ON と OFF の状態でコントロールに表示されるテキストと、既定値の両方を構成できます。 たとえば、スイッチを既定では ON に設定し、OFF/ON ではなく NO/YES を読み取るには、次の XML 内で checkedtextOntextOff 属性を設定できます。

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

タイトルの指定

Switch ウィジェットでは、text 属性を次のように設定することで、テキスト ラベルを含めることもサポートされます。

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

このマークアップは、実行時に次のスクリーンショットを生成します。

Switch ウィジェットの前に水平方向のテキストが存在するデモ アプリのスクリーンショット

Switch の値が変更されると、CheckedChange イベントが発生します。 たとえば、次のコード内ではこのイベントをキャプチャし、CompoundButton.CheckedChangeEventArg 引数の一部としてイベント ハンドラーに渡される SwitchisChecked の値に基づいたメッセージを含む Toast ウィジェットを表示します。

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