微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 防止Snackbar解除动作点击

如何防止Android Snackbar在setAction onclick上解雇,谢谢

Snackbar.make(rootlayout,"Hello SnackBar!",Snackbar.LENGTH_INDEFINITE)
   .setAction("Undo",new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           // Snackbar should not dismiss
       }
   })
   .show();
最佳答案
这是一个更简洁的解决方案,不需要反射.它基于知道Snackbar中按钮的视图ID.这与支持库的版本27.1.1一起使用,但如果视图ID将被更改,则可能在将来的版本中不再有效!

首先,使用空的OnClickListener设置快餐栏操作:

snackbar.setAction("Save",new View.OnClickListener() {
    @Override
    public void onClick(View v) {}
});

然后,在小吃栏上添加回调(在显示之前).覆盖onShown函数,使用R.id.snackbar_action找到按钮并向其添加自己的OnClickListener.只有在手动调用snackbar.dismiss()时才会关闭快餐栏,或者如果快餐栏附加到CoordinatorLayout(如何禁用滑动是一个不同的SO问题),则会轻扫.

snackbar.addCallback(new BaseTransientBottomBar.BaseCallbackottomBar) {
        super.onShown(transientBottomBar);

        transientBottomBar.getView().findViewById(R.id.snackbar_action).setonClickListener(new View.OnClickListener() {
            // your code here
        }

原文地址:https://www.jb51.cc/android/430063.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐