ปุ่มตัวเลือกช่วยให้ผู้ใช้เลือกตัวเลือกจากชุดตัวเลือกได้ คุณใช้ปุ่มตัวเลือกได้เมื่อเลือกได้เพียงรายการเดียวจากรายการ หากผู้ใช้ต้องเลือกมากกว่า 1 รายการ ให้ใช้สวิตช์แทน
แพลตฟอร์ม API
ใช้ Composable RadioButton
เพื่อแสดงรายการตัวเลือกที่ใช้ได้ ปิดตัวเลือก RadioButton
แต่ละรายการและป้ายกำกับไว้ในคอมโพเนนต์ Row
เพื่อจัดกลุ่มตัวเลือกเหล่านั้นไว้ด้วยกัน
RadioButton
ประกอบด้วยพารามิเตอร์หลักต่อไปนี้
selected
: ระบุว่ามีการเลือกปุ่มตัวเลือกหรือไม่onClick
: ฟังก์ชัน LAMBDA ที่ทำงานเมื่อมีการคลิกปุ่มตัวเลือก หากค่านี้คือ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
- ฟังก์ชัน LAMBDA ของ
onClick
จะอัปเดตสถานะselectedOption
เป็นตัวเลือกที่คลิกเมื่อมีการคลิกRow
role = Role.RadioButton
แจ้งบริการการช่วยเหลือพิเศษว่าRow
ทำงานเป็นปุ่มตัวเลือก
RadioButton(...)
สร้างคอมโพสิเบิลRadioButton
onClick = null
ในRadioButton
ช่วยปรับปรุงการช่วยเหลือพิเศษ ซึ่งจะป้องกันไม่ให้ปุ่มตัวเลือกจัดการเหตุการณ์คลิกโดยตรง และอนุญาตให้ตัวแก้ไขselectable
ของRow
จัดการสถานะการเลือกและลักษณะการช่วยเหลือพิเศษ
ผลลัพธ์
แหล่งข้อมูลเพิ่มเติม
- Material Design: ปุ่ม