为消息添加操作

您可以为 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 操作。