关于Snackbar的认识 用于代替toast

关于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消失时,记得再次把虚拟按键栏显示出来,不然屏幕底部会多出一块布局,很难看.不过以上这两点都不用操心了,我已经在代码中配置好了,直接复制粘贴就能用,代码需要注意的地方都已经注释清楚了.代码如下:

  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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值