android - 如何在用户执行任何操作时关闭 Snackbar?

标签 android dismiss snackbar indefinite

我可以像这样显示 snackbar。

Snackbar snackbar = Snackbar.make(this.findViewById(android.R.id.content), "snackbar", Snackbar.LENGTH_INDEFINITE)
        .setAction("action", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // ...
            }
        });
snackbar.show();

我的 snackbar 有无限长,我想要它。但是当用户执行任何操作时,例如滚动屏幕或触摸屏幕/ View ,我想关闭 snackbar。我可以找到一些库和代码,但它们太复杂了。有没有简单的方法来关闭 snackbar?

最佳答案

我假设您正在使用 fragment ,因此您可以为 fragment 主布局设置一个 onTouchListener,并放入 snackbar.dismiss() 中。

如果您只想在滚动时关闭,请设置一个 onScrollListener 并在事件中关闭 snackbar ,这是 recyclerview onScroll 的实现:

list.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if (dy > 0) 
                    snackbar.dismiss();
                    }
                });

关于android - 如何在用户执行任何操作时关闭 Snackbar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34974224/

相关文章:

ios - 在 Swift 中使用自定义函数调用的 snackbar

android - 如何在androidx中访问RecyclerView?

安卓工作室 : new project vs new module

android - android 中的无效文件 : google-play-services_lib/build. xml

java - 将双值写入 TextView

android - 无法关闭自定义对话框

android - 是否有任何可能的方法可以在没有任何操作的情况下在互联网连接时自动关闭 android snackbar (LENGTH_INDEFINITE)?

ios - swift 。检测何时关闭 Facebook 登录 View Controller

android - 从 OnClick 中关闭 AlertDialog.Builder

dart - Flutter:如何通过 appbar 操作显示 snackbar