您可以为 Snackbar
添加操作,使用户可以回复您的消息。如果您为 Snackbar
添加操作,Snackbar
会在消息文本旁边放置一个按钮。用户可以通过按下该按钮来触发操作。例如,电子邮件应用可能会在其“电子邮件已归档”消息上放置一个“撤消”按钮;如果用户点击“撤消”按钮,应用会从归档中撤回电子邮件。

图 1.该 Snackbar 具有一个撤消按钮,用于恢复刚刚移除的项。
若要为 Snackbar
消息添加操作,您需要定义一个可实现 View.OnClickListener
接口的监听器对象。如果用户点击该消息操作,系统会调用您的监听器的 onClick()
方法。例如,下面的代码段显示了用于撤消操作的监听器:
Kotlin
class MyUndoListener : View.OnClickListener { fun onClick(v: View) { // Code to undo the user's last action } }
Java
public class MyUndoListener implements View.OnClickListener { @Override public void onClick(View v) { // Code to undo the user's last action } }
使用其中一种 SetAction()
方法将监听器附加到您的 Snackbar
。请务必在调用 show()
之前附加监听器,如以下代码示例所示:
Kotlin
val mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT) mySnackbar.setAction(R.string.undo_string, MyUndoListener()) mySnackbar.show()
Java
Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_archived, Snackbar.LENGTH_SHORT); mySnackbar.setAction(R.string.undo_string, new MyUndoListener()); mySnackbar.show();
注意:Snackbar
会在不久之后自动消失,因此不能指望用户看到消息或有机会按下按钮。为此,应考虑提供一种替代方式来执行任何 Snackbar
操作。