คุณเพิ่มการดำเนินการในSnackbar
เพื่ออนุญาตให้ผู้ใช้ตอบกลับข้อความของคุณได้ เมื่อทำเช่นนี้
Snackbar จะวางปุ่มไว้ข้างข้อความ และผู้ใช้จะ
เรียกใช้การดำเนินการของคุณได้โดยแตะปุ่ม เช่น แอปอีเมลอาจใส่ปุ่มเลิกทำในข้อความ "เก็บอีเมล" หากผู้ใช้แตะปุ่ม
ยกเลิก แอปจะนำอีเมลออกจากที่เก็บ
Snackbar พร้อมปุ่มดำเนินการเลิกทำที่
กู้คืนรายการที่นำออก
หากต้องการเพิ่มการดำเนินการไปยังข้อความ Snackbar ให้กำหนดออบเจ็กต์ Listener
ที่ใช้
อินเทอร์เฟซ View.OnClickListener
ระบบจะเรียกใช้เมธอด
onClick()
ของ Listener หากผู้ใช้แตะการดำเนินการที่แนะนำ เช่น ข้อมูลโค้ดนี้แสดง
เครื่องมือฟังสำหรับการดำเนินการเลิกทำ
class MyUndoListener : View.OnClickListener { override fun onClick(v: View) { // Code to undo the user's last action. } }
ใช้วิธีใดวิธีหนึ่งต่อไปนี้
setAction()
เพื่อแนบ Listener กับ Snackbar แนบ
เครื่องมือตรวจสอบก่อนเรียก
show()
ดังที่แสดงในตัวอย่างโค้ดนี้
val mySnackbar = Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT ) mySnackbar.setAction(R.string.undo_string, MyUndoListener()) mySnackbar.show()
SnackbarHost
ได้ดังตัวอย่างต่อไปนี้
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { DACPlaygroundTheme { val snackbarHostState = remember { SnackbarHostState() } val scope = rememberCoroutineScope() Scaffold( snackbarHost = { SnackbarHost(snackbarHostState) }, content = { padding -> Button( modifier = Modifier.padding(padding), onClick = { scope.launch { snackbarHostState.showSnackbar( message = "1 item removed", actionLabel = "UNDO", duration = SnackbarDuration.Short ).run { when (this) { Dismissed -> Log.d("SNACKBAR", "Dismissed") ActionPerformed -> Log.d("SNACKBAR", "UNDO CLICKED") } } } } ) { Text("Show snackbar") } } ) } } }