В любом интерфейсе существуют элементы, позволяющие пользователю подтвердить действие с помощью простых ответов «да» или «нет», например, согласиться с условиями, выбрать тёмную тему или активировать дополнительные функции. Для этого используются два стандартных компонента — 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 — это естественное продолжение сегодняшнего занятия.