关于Snackbar的认识 用于代替toast

来源:互联网 发布:arp绑定与mac绑定区别 编辑:程序博客网 时间:2024/06/06 12:56
关于Snackbar的认识 用于代替toast 


Snackbar.make(view, "This is a message! ", Snackbar.LENGTH_LONG).show();                                                       

参数1,view是谁都行 主要是activity布局上的一个view即可,

Snackbar.make(view, "This is a message! ", Snackbar.LENGTH_LONG)
        .setAction("Action"new View.OnClickListener() {  //给ACTION注册点击事件
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"111",Toast.LENGTH_SHORT).show();
            }
        }).setActionTextColor(Color.RED)
        .show();
snackbar设置背景颜色
Snackbar bar=Snackbar.make(rl_activity"it is Snackbar",Snackbar.LENGTH_SHORT);
View v=bar.getView();
v.setBackgroundColor(Color.GREEN);
bar.show();



方式二:

思路:既然有虚拟按键栏遮挡Snackbar,那么我们就在显示Snackbar的同时隐藏掉虚拟按键栏,这样屏幕底部就只有Snackbar,也就不存在遮挡问题了,但是有两点需要注意,第一点,配置隐藏虚拟按键栏的flag时要注意配置全面一点,不然会出现点击屏幕又弹出虚拟按键栏的情况,第二点,当Snackbar消失时,记得再次把虚拟按键栏显示出来,不然屏幕底部会多出一块布局,很难看.不过以上这两点都不用操心了,我已经在代码中配置好了,直接复制粘贴就能用,代码需要注意的地方都已经注释清楚了.代码如下:

[java] view plain copy在CODE上查看代码片派生到我的代码片
  1. /** 
  2.     * 展示一个SnackBar 
  3.     */  
  4.    public void showSnackBar(String message) {  
  5.        //去掉虚拟按键  
  6.        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  
  7.                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION //隐藏虚拟按键栏  
  8.                | View.SYSTEM_UI_FLAG_IMMERSIVE //防止点击屏幕时,隐藏虚拟按键栏又弹了出来  
  9.        );  
  10.        final Snackbar snackbar = Snackbar.make(getWindow().getDecorView(), message, Snackbar.LENGTH_INDEFINITE);  
  11.        snackbar.setAction("知道了", new View.OnClickListener() {  
  12.            @Override  
  13.            public void onClick(View v) {  
  14.                snackbar.dismiss();  
  15.                //隐藏SnackBar时记得恢复隐藏虚拟按键栏,不然屏幕底部会多出一块空白布局出来,和难看  
  16.                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);  
  17.            }  
  18.        }).show();  
  19.    }  

这两种方法都可以实现效果,选择哪种方式都ok.

动态图录制完有点卡顿,实际效果很流畅





https://github.com/AndreiD/TSnackBar从顶部显示的snackbar

0 0
原创粉丝点击