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
        }

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...