Przycisk opcji umożliwia użytkownikowi wybranie opcji z zestawu opcji. Przycisk opcji jest używany, gdy z listy można wybrać tylko jeden element. Jeśli użytkownicy muszą wybrać więcej niż 1 element, użyj przełącznika.
Interfejs API
Użyj funkcji kompozycyjnej RadioButton, aby wyświetlić listę dostępnych opcji. Umieść każdą opcję RadioButton i jej etykietę w komponencie Row, aby je zgrupować.
RadioButton zawiera te kluczowe parametry:
selected: wskazuje, czy opcja jest wybrana.onClick: funkcja lambda, którą aplikacja wykonuje, gdy użytkownik kliknie przycisk opcji. Jeśli wartość tonull, użytkownik nie może bezpośrednio wchodzić w interakcję z przyciskiem opcji.enabled: określa, czy przycisk opcji jest włączony czy wyłączony. Użytkownicy nie mogą wchodzić w interakcje z wyłączonymi opcjami.interactionSource: umożliwia obserwowanie stanu interakcji przycisku, np. czy jest naciśnięty, najechany kursorem lub zaznaczony.
Tworzenie podstawowego przycisku opcji
Poniższy fragment kodu renderuje listę opcji w elemencie 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) ) } } } }
Najważniejsze informacje o kodzie
radioOptionsreprezentuje etykiety opcji.- Funkcja typu „composable”
remembertworzy zmienną stanuselectedOptioni funkcję do aktualizowania tego stanu o nazwieonOptionSelected. Ten stan zawiera wybraną opcję przycisku.mutableStateOf(radioOptions[0])inicjuje stan do pierwszego elementu na liście. „Połączenia” to pierwszy element, więc jest to domyślnie wybrany przycisk.
Modifier.selectableGroup()zapewnia prawidłowe działanie ułatwień dostępu w przypadku czytników ekranu. Informuje system, że elementy w tymColumnsą częścią grupy, którą można wybrać, co umożliwia prawidłową obsługę czytnika ekranu.Modifier.selectable()sprawia, że cały elementRowdziała jako pojedynczy element, który można wybrać.selectedwskazuje, czy bieżącyRowjest wybrany na podstawie stanuselectedOption.- Funkcja lambda
onClickaktualizuje stanselectedOptiondo klikniętej opcji, gdy klikniętoRow. role = Role.RadioButtoninformuje usługi ułatwień dostępu, żeRowdziała jako przycisk opcji.
RadioButton(...)tworzy element kompozycyjnyRadioButton.onClick = nullna urządzeniuRadioButtonpoprawia ułatwienia dostępu. Zapobiega to bezpośredniej obsłudze zdarzenia kliknięcia przez przycisk opcji i umożliwia modyfikatorowiselectableelementuRowzarządzanie stanem wyboru i zachowaniem ułatwień dostępu.
Wynik
Dodatkowe materiały
- Material Design: przyciski