Радиокнопка позволяет пользователю выбрать вариант из набора параметров. Вы используете переключатель, когда из списка можно выбрать только один элемент. Если пользователям необходимо выбрать более одного элемента, вместо этого используйте переключатель .
поверхность 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
управлять состоянием выбора и поведением доступности.
-
Результат
Дополнительные ресурсы
- Материальный дизайн: кнопки
Радиокнопка позволяет пользователю выбрать вариант из набора параметров. Вы используете переключатель, когда из списка можно выбрать только один элемент. Если пользователям необходимо выбрать более одного элемента, вместо этого используйте переключатель .
поверхность 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
управлять состоянием выбора и поведением доступности.
-
Результат
Дополнительные ресурсы
- Материальный дизайн: кнопки