میتوانید به
Snackbar
کنش اضافه کنید تا کاربر بتواند به پیامتان پاسخ دهد. وقتی این کار را انجام میدهید،
Snackbar دکمهای را در کنار نوشتار پیام قرار میدهد و کاربر میتواند
با تکضرب زدن روی دکمه، کنش شما را راهاندازی کند. برای مثال، برنامه ایمیل ممکن است
دکمه واگرد را در پیام «ایمیل بایگانی شد» قرار دهد. اگر کاربر روی دکمه
واگرد ضربه بزند، برنامه ایمیل را از بایگانی خارج میکند.
Snackbar با دکمه کنش واگرداندن که
مورد برداشتهشده را بازیابی میکند.
برای افزودن کنش به پیام Snackbar، شیء شنوندهای تعریف کنید که رابط View.OnClickListener را پیادهسازی کند. اگر کاربر روی کنش پیام ضربه بزند، سیستم
onClick()
روش شنونده شما را فرا میخواند. برای مثال، این گزیده یک شنونده برای کنش واگرداندن را نشان میدهد:
class MyUndoListener : View.OnClickListener { override fun onClick(v: View) { // Code to undo the user's last action. } }
از یکی از
setAction()
روشها برای پیوست کردن شنونده به 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") } } ) } } }