Урок на Kotlin в Android Studio: Switch и CheckBox

В любом интерфейсе существуют элементы, позволяющие пользователю подтвердить действие с помощью простых ответов «да» или «нет», например, согласиться с условиями, выбрать тёмную тему или активировать дополнительные функции. Для этого используются два стандартных компонента — Switch и CheckBox. В этом уроке мы рассмотрим, как интегрировать их в приложение с помощью Android Studio и написать соответствующий код на языке Kotlin. Мы покажем, как просто можно управлять состоянием этих элементов.


Switch и CheckBox: в чём разница

Switch — это ползунок, который обычно используют для быстрого включения или отключения функции: Wi‑Fi, Bluetooth, тёмная тема. CheckBox — квадратная галочка, применяемая в списках задач, настройках фильтров или для подтверждения согласия. Оба компонента работают очень похоже: у них есть состояние isChecked, которое можно прочитать или установить из кода.


Добавление компонентов в разметку

В файле activity_main.xml разместите Switch и CheckBox, а также TextView для отображения их состояния. Используем LinearLayout с вертикальной ориентацией.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="24dp">

    <Switch
        android:id="@+id/switchDarkMode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Тёмная тема" />

    <CheckBox
        android:id="@+id/checkBoxAgree"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Согласен с условиями" />

    <TextView
        android:id="@+id/tvStatus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:layout_marginTop="16dp" />
</LinearLayout>

Обработка изменений в Activity

В MainActivity.kt получим ссылки на элементы и установим слушатели. Switch и CheckBox реагируют на изменение через setOnCheckedChangeListener, который передаёт новое состояние и позволяет сразу обновить текст.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val switchDarkMode = findViewById<Switch>(R.id.switchDarkMode)
        val checkBoxAgree = findViewById<CheckBox>(R.id.checkBoxAgree)
        val tvStatus = findViewById<TextView>(R.id.tvStatus)

        switchDarkMode.setOnCheckedChangeListener { _, isChecked ->
            val mode = if (isChecked) "включена" else "выключена"
            tvStatus.text = "Тёмная тема: $mode"
        }

        checkBoxAgree.setOnCheckedChangeListener { _, isChecked ->
            val agreement = if (isChecked) "да" else "нет"
            tvStatus.text = "Согласие: $agreement"
        }
    }
}

Объединённый вывод состояния

Чтобы статусная строка показывала оба значения одновременно, удобно вынести обновление в отдельную функцию и вызывать её из обоих слушателей.

fun updateStatus() {
    val theme = if (switchDarkMode.isChecked) "тёмная" else "светлая"
    val agree = if (checkBoxAgree.isChecked) "согласен" else "не согласен"
    tvStatus.text = "Тема: $theme, Условия: $agree"
}

switchDarkMode.setOnCheckedChangeListener { _, _ -> updateStatus() }
checkBoxAgree.setOnCheckedChangeListener { _, _ -> updateStatus() }

Такой подход сохраняет логику аккуратной и избавляет от дублирования кода.


Установка состояния программно

Иногда нужно изменить состояние переключателя из кода — например, загрузить сохранённые настройки. Для этого достаточно присвоить значение свойству isChecked.

// включить тёмную тему по умолчанию
switchDarkMode.isChecked = true

// снять галочку согласия
checkBoxAgree.isChecked = false

Слушатели при этом также срабатывают, поэтому интерфейс обновится автоматически.


Полезные мелочи

  • Меняйте цвет. Цвет ползунка Switch и галочки CheckBox можно изменить через android:thumbTint и android:trackTint в XML или программно через setTrackTintList.
  • Используйте CompoundButton. Switch и CheckBox наследуются от CompoundButton, поэтому можно применить общий обработчик для всех таких элементов, проверяя view.id.
  • Доступность. Не забывайте добавлять android:contentDescription для Switch, чтобы скринридеры могли озвучить его назначение.

Коротко о главном

Этот урок в Android Studio на Kotlin показал, как использовать Switch и CheckBox — два базовых элемента для получения ответа «да/нет» от пользователя. Вы научились добавлять их в разметку, обрабатывать изменения состояния и управлять ими из кода. Теперь вы можете встраивать настройки, согласия и любые бинарные опции в свои приложения. Попробуйте сохранять выбранные значения в SharedPreferences — это естественное продолжение сегодняшнего занятия.