【问题标题】:SnackBar click to dismiss [duplicate]SnackBar点击关闭[重复]
【发布时间】:2016-05-22 17:22:14
【问题描述】:

我需要创建一个要求用户单击以关闭的 SnackBar。我怎么做?以下内容无法编译,我不想将 SnackBar 变量设为字段。

final Snackbar snack = Snackbar.make(findViewById(R.id.notAvailable),
                "You don't have this feature",
                Snackbar.LENGTH_INDEFINITE)
                .setAction("OK", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                snack.dismiss();
            }
        });
        snack.show();

【问题讨论】:

  • 如果您想将操作按钮用于其他操作,您可以通过单击 Snackbar 中的其他位置来关闭 Snackbar,如下所示:final Snackbar snackbar = Snackbar.make(yourView, yourMainText, Snackbar.LENGTH_INDEFINITE).setAction(yourActionText, yourActionOnClickListener); View snackbarView = snackbar.getView(); snackbarView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { snackbar.dismiss(); } }); snackbar.show();

标签: android android-layout android-snackbar


【解决方案1】:

使用普通的 onClick Listener。实现一个点击操作,然后将其设为空,清空 sanckbar 本身。点击空的点击动作将关闭snackbar

示例代码。

Snackbar.make(coordinatorLayoutView, "Service Enabled", Snackbar.LENGTH_LONG)
                        .setAction("DISMISS", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                            }
                        })
                        .show();

【讨论】:

  • 这是关闭 Snackbar 的正确方法。但是,如果您愿意,您可以拥有一个 Snackbar 对象并对其操作 setAction() 和 show() 方法以便更好地理解。
  • 为了保持snackbar可见,还需要LENGTH_INDEFINITE属性(如问题代码所示)。
  • 只是为了完整起见:点击处理程序是否为空或有一些代码行无关紧要 - 它将被执行并且小吃栏将自动关闭。这也适用于 LENGTH_INDEFINITE。
猜你喜欢
  • 2019-10-07
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 2015-07-07
  • 2016-05-23
相关资源
最近更新 更多