[Kotlin] トグルボタンのクリックを処理する

私の著書のAndroid SDKポケットリファレンスでまだ対応できていないKotlin化ですが、業務でも利用される機会が多くなってきているかと思います。
少しでもお役に立てるように、Kotlin化した場合にどのように書いていくのかを紹介していくコーナー。
今回はトグルボタンのクリック処理を紹介します。

今回のサンプルコードは以下に公開しています。

それでは始めましょう。

まずはレイアウトの定義です。
android:textOnandroid:textOffで選択状態と選択解除状態のときの表示テキストを設定できるところが特徴です。

activity_main.xml

<ToggleButton
    android:id="@+id/sample_toggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textOn="選択状態"
    android:textOff="選択解除状態"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

ToggleButtonの状態変化はsetOnCheckedChangeListenerを使ってコールバックを受け取ります。

MainActivity.kt

val sampleToggle: ToggleButton = findViewById(R.id.sample_toggle)
sampleToggle.setOnCheckedChangeListener { _, _ ->
    Toast.makeText(this, "ToggleButtonの状態が変わりました", Toast.LENGTH_SHORT).show()
}

チェック状態の変化をコールバックで受け取る仕組みはチェックボックスと同様です。
以下の記事も参考になるかと思います。

こちらの実行結果は以下のようになります。

UI的にMaterial Designという感が薄い印象が強いです。
利用していくのであれば、UIをカスタマイズなどしていく必要が出てきそうですし、使う場面は絞られそうな気がします。
しかし、on / offを伝えるのにボタン上のテキストも一緒に変更できるのは便利なものです。
Material Designを取るか、利便性を取るか。よく吟味してから利用してみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください