Радиокнопка позволяет пользователю выбрать вариант из набора параметров. Вы используете переключатель, когда из списка можно выбрать только один элемент. Если пользователям необходимо выбрать более одного элемента, вместо этого используйте переключатель .
поверхность API
Используйте компонуемый элемент RadioButton
для отображения списка доступных опций. Оберните каждый параметр RadioButton
и его метку внутри компонента Row
, чтобы сгруппировать их вместе.
RadioButton
включает в себя следующие ключевые параметры:
-
selected
: Указывает, выбран ли переключатель. -
onClick
: лямбда-функция, которая выполняется при нажатии переключателя. Если этоnull
, пользователь не может напрямую взаимодействовать с переключателем. -
enabled
: определяет, включена или отключена кнопка-переключатель. Пользователи не могут взаимодействовать с отключенными переключателями. -
interactionSource
: позволяет наблюдать за состоянием взаимодействия кнопки, например, нажата ли она, наведена или находится в фокусе.
Создайте базовый переключатель
Следующий фрагмент кода отображает список переключателей внутри Column
:
@Composable fun RadioButtonSingleSelection(modifier: Modifier = Modifier) { val radioOptions = listOf("Calls", "Missed", "Friends") val (selectedOption, onOptionSelected) = remember { mutableStateOf(radioOptions[0]) } // Note that Modifier.selectableGroup() is essential to ensure correct accessibility behavior Column(modifier.selectableGroup()) { radioOptions.forEach { text -> Row( Modifier .fillMaxWidth() .height(56.dp) .selectable( selected = (text == selectedOption), onClick = { onOptionSelected(text) }, role = Role.RadioButton ) .padding(horizontal = 16.dp), verticalAlignment = Alignment.CenterVertically ) { RadioButton( selected = (text == selectedOption), onClick = null // null recommended for accessibility with screen readers ) Text( text = text, style = MaterialTheme.typography.bodyLarge, modifier = Modifier.padding(start = 16.dp) ) } } } }
Ключевые моменты о коде
-
radioOptions
представляет метки для переключателей. - Компонуемая функция
remember
создает переменную состоянияselectedOption
и функцию для обновления этого состояния, называемуюonOptionSelected
. В этом состоянии сохраняется выбранная опция переключателя.-
mutableStateOf(radioOptions[0])
инициализирует состояние первого элемента в списке. «Звонки» — это первый элемент, поэтому этот переключатель выбран по умолчанию.
-
-
Modifier.selectableGroup()
обеспечивает правильное поведение специальных возможностей для программ чтения с экрана. Он сообщает системе, что элементы в этомColumn
являются частью выбираемой группы, что обеспечивает правильную поддержку чтения с экрана. -
Modifier.selectable()
заставляет всюRow
действовать как один выбираемый элемент.-
selected
указывает, выбрана ли текущаяRow
на основе состоянияselectedOption
. - Лямбда-функция
onClick
обновляет состояниеselectedOption
до выбранной опции при щелчкеRow
. -
role = Role.RadioButton
сообщает службам доступности, чтоRow
функционирует как переключатель.
-
-
RadioButton(...)
создает составной элементRadioButton
.-
onClick = null
дляRadioButton
улучшает доступность. Это не позволяет переключателю напрямую обрабатывать событие щелчка и позволяет модификаторуselectable
Row
управлять состоянием выбора и поведением доступности.
-
Результат

Дополнительные ресурсы
- Материальный дизайн: кнопки