Tombol pilihan memungkinkan pengguna memilih opsi dari kumpulan opsi. Anda menggunakan tombol pilihan jika hanya satu item yang dapat dipilih dari daftar. Jika pengguna perlu memilih lebih dari satu item, gunakan tombol sebagai gantinya.
Platform API
Gunakan composable RadioButton
untuk mencantumkan opsi yang tersedia. Gabungkan setiap
opsi RadioButton
dan labelnya di dalam komponen Row
untuk mengelompokkan
opsi tersebut.
RadioButton
menyertakan parameter utama berikut:
selected
: Menunjukkan apakah tombol pilihan dipilih.onClick
: Fungsi lambda yang dieksekusi saat tombol pilihan diklik. Jika ini adalahnull
, pengguna tidak dapat berinteraksi langsung dengan tombol pilihan.enabled
: Mengontrol apakah tombol pilihan diaktifkan atau dinonaktifkan. Pengguna tidak dapat berinteraksi dengan tombol pilihan yang dinonaktifkan.interactionSource
: Memungkinkan Anda mengamati status interaksi tombol, misalnya, apakah tombol ditekan, diarahkan kursor, atau difokuskan.
Membuat tombol pilihan dasar
Cuplikan kode berikut merender daftar tombol pilihan dalam 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) ) } } } }
Poin penting tentang kode
radioOptions
mewakili label untuk tombol pilihan.- Fungsi composable
remember
membuat variabel statusselectedOption
dan fungsi untuk memperbarui status tersebut yang disebutonOptionSelected
. Status ini menyimpan opsi tombol pilihan yang saat ini dipilih.mutableStateOf(radioOptions[0])
menginisialisasi status ke item pertama dalam daftar. "Panggilan" adalah item pertama, sehingga tombol pilihan ini dipilih secara default.
Modifier.selectableGroup()
memastikan perilaku aksesibilitas yang tepat untuk pembaca layar. Ini memberi tahu sistem bahwa elemen dalamColumn
ini merupakan bagian dari grup yang dapat dipilih, yang memungkinkan dukungan pembaca layar yang tepat.Modifier.selectable()
membuat seluruhRow
bertindak sebagai satu item yang dapat dipilih.selected
menunjukkan apakahRow
saat ini dipilih berdasarkan statusselectedOption
.- Fungsi lambda
onClick
memperbarui statusselectedOption
ke opsi yang diklik saatRow
diklik. role = Role.RadioButton
memberi tahu layanan aksesibilitas bahwaRow
berfungsi sebagai tombol pilihan.
RadioButton(...)
membuat composableRadioButton
.onClick = null
diRadioButton
meningkatkan aksesibilitas. Hal ini mencegah tombol pilihan menangani peristiwa klik secara langsung, dan memungkinkan pengubahselectable
Row
untuk mengelola status pemilihan dan perilaku aksesibilitas.
Hasil
Referensi lainnya
- Desain Material: Tombol