Tombol pilihan radio button memungkinkan pengguna memilih salah satu opsi dari kumpulan opsi. Anda menggunakan tombol pilihan saat hanya satu item yang dapat dipilih dari daftar. Jika pengguna perlu memilih lebih dari satu item, gunakan tombol ganti sebagai gantinya.
Permukaan API
Gunakan composable RadioButton untuk mencantumkan opsi yang tersedia. Gabungkan setiap opsi RadioButton dan labelnya di dalam komponen Row untuk mengelompokkannya.
RadioButton mencakup parameter utama berikut:
selected: Menunjukkan apakah tombol pilihan dipilih.onClick: Fungsi lambda yang dijalankan aplikasi Anda saat pengguna mengklik tombol pilihan. Jikanull, 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, 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 utama tentang kode
radioOptionsmewakili label untuk tombol pilihan.- Fungsi composable
remembermembuat variabel statusselectedOptiondan fungsi untuk memperbarui status tersebut yang disebutonOptionSelected. Status ini menyimpan opsi tombol pilihan yang dipilih.mutableStateOf(radioOptions[0])menginisialisasi status ke item pertama dalam daftar. "Panggilan" adalah item pertama, sehingga merupakan tombol pilihan yang dipilih secara default.
Modifier.selectableGroup()memastikan perilaku aksesibilitas yang tepat untuk pembaca layar. Fungsi ini memberi tahu sistem bahwa elemen dalamColumnini adalah bagian dari grup yang dapat dipilih, yang memungkinkan dukungan pembaca layar yang tepat.Modifier.selectable()membuat seluruhRowbertindak sebagai satu item yang dapat dipilih.selectedmenunjukkan apakahRowsaat ini dipilih berdasarkan statusselectedOption.- Fungsi lambda
onClickmemperbarui statusselectedOptionke opsi yang diklik saatRowdiklik. role = Role.RadioButtonmemberi tahu layanan aksesibilitas bahwa fungsiRowsebagai tombol pilihan.
RadioButton(...)membuat composableRadioButton.onClick = nulldiRadioButtonmeningkatkan aksesibilitas. Hal ini mencegah tombol pilihan menangani peristiwa klik secara langsung, dan memungkinkan pengubahselectableRowmengelola status pilihan dan perilaku aksesibilitas.
Hasil
Referensi lainnya
- Desain Material: Tombol