Opcja umożliwia użytkownikowi wybranie jednej z kilku dostępnych opcji. Przycisku opcji używa się, gdy z listy można wybrać tylko 1 element. Jeśli użytkownicy muszą wybrać więcej niż 1 element, użyj przełącznika.
Powierzchnia interfejsu API
Użyj komponentu RadioButton, aby wyświetlić listę dostępnych opcji. Umieść każdą RadioButtonopcję i jej etykietę w komponencie Row, aby je pogrupować.
RadioButton obejmuje te kluczowe parametry:
selected: wskazuje, czy przycisk opcji jest zaznaczony.onClick: funkcja lambda, którą aplikacja wykonuje, gdy użytkownik kliknie przycisk opcji. Jeśli ta 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 interakcję z wyłączonymi opcjami.interactionSource: umożliwia obserwowanie stanu interakcji z przyciskiem, np. czy jest on naciśnięty, czy kursor znajduje się nad nim lub czy jest on aktywny.
Tworzenie podstawowego przycisku opcji
Ten 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
radioOptionsoznacza etykiety przycisków opcji.- Funkcja kompozycyjna
remembertworzy zmienną stanuselectedOptioni funkcję aktualizującą ten stan o nazwieonOptionSelected. Ten stan zawiera wybraną opcję przycisku radiowego.mutableStateOf(radioOptions[0])inicjuje stan pierwszego elementu na liście. „Połączenia” to pierwszy element, więc jest to domyślnie zaznaczona opcja.
Modifier.selectableGroup()zapewnia prawidłowe działanie funkcji ułatwień dostępu dla czytników ekranu. Informuje system, że elementy w tym elemencieColumnnależą do grupy, którą można wybrać, co umożliwia prawidłowe działanie 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 kliknieszRow. role = Role.RadioButtoninformuje usługi ułatwień dostępu, żeRowdziała jak przycisk opcji.
RadioButton(...)tworzy funkcjęRadioButton.onClick = nullnaRadioButtonpoprawia ułatwienia dostępu. Zapobiega to bezpośredniej obsłudze zdarzenia kliknięcia przez przycisk opcji i umożliwia modyfikatorowiRowselectablezarządzanie stanem zaznaczenia i zachowaniem związanym z ułatwieniami dostępu.
Wynik
Dodatkowe materiały
- Material Design: przyciski