Snackbar

1.前言

  • Snackbar是Material Design中的一个控件。可以理解为一个加强版Toast,或一个轻量级的Dialog。
  • 相比Toast可以添加点击事件。可以自动消失,也可以侧滑取消(需要在CoordinatorLayout布局)。
  • SnackBars 提供了一个轻量级的反馈操作,他们在屏幕的底部显示一条简短的信息,如果是较大的设备就显示在左下角。SnackBar出现在屏幕中所有其他元素的上方,同一时间只能显示一条SnackBar。
  • 可以通过它的CallBack来得知Snackbar是显示还是隐藏
  • 事实上Snackbar的背景、文字都可以自定义甚至添加图标。但是不建议这么操作,因为必须在代码中实现上述功能。如果非要实现,最好是搞一个封装类。但是干嘛不用PopupWindows或Dialog。
    官方使用建议:
  • 通常 Snackbar 的高度应该仅仅用于容纳所有的文本,而文本应该与执行的操作相关。Snackbar 中不能包含图标,操作只能以文本的形式存在。
  • 最多0-1个操作,不包含取消按钮
  • 当一个动作发生的时候,应当符合提示框和可用性规则。当有2个或者2个以上的操作出现时,应该使用提示框而不是 Snackbar,即使其中的一个是取消操作。如果 Snackbar 中提示的操作重要到需要打断屏幕上正在进行的操作,那么理当使用提示框而非 Snackbar。

2.基本使用

2.1添加依赖

implementation 'com.android.support:design:25.3.0'

2.2创建Snackbar并弹出

/**
* 其中的View可以是任何view。snackbar会查找这个view的第一个合适的父view。然后创建一个snackbarView用来显示内容,添加进父view。
* message是要显示的提醒文本。
* duration是时间常量。
* 有三个值:Snackbar.LENGTH_INDEFINITE 永远显示, LENGTH_LONG显示较长时间, LENGTH_SHORT 显示较短时间。
*/
Snackbar.make(View,message,duration)
              .show();

2.3设置点击事件

Snackbar.make().setAction(message,click listener);
Snackbar.make().setAction("hi", new View.OnClickListener() {
            @Override
            public void onClick(View v) {                
            }
       });

2.4设置callBack回调

在Snackbar弹出和消失时,都会触发一个回调事件

  • onDismissed()方法:Snackbar消失的时候触发
  • onShown()方法:Snackbar显示的时候触发
Snackbar.make().addCallback(Snackbar.Callback);
public class sna extends Snackbar.Callback {
        @Override
        public void onShown(Snackbar sb) {
            super.onShown(sb);
        }
        @Override
        public void onDismissed(Snackbar transientBottomBar, int event) {
            super.onDismissed(transientBottomBar, event);
        }
    }

2.5相关设置

//这些方法都可以传入如R.id.的int参数。
snackbar.setText();
snackbar.setActionTextColor(Color.RED);Action文本颜色
snackbar.setDuration(5000);//设置显示时间

3.高级使用

如下的代码,如修改背景颜色,修改提示文本颜色,添加icon,并不建议使用。会造成代码太长,且布局和代码没分开。Snackbar本身就是一种针对操作的轻量级反馈。

3.1背景修改

//先获得SnackbarBaseLayout(继承FrameLayout),然后就可以修改这个view的参数了。
View snackbarBaseView = snackbar.getView();
v.setBackgroundColor();

3.2提醒文本参数修改

//先获得textView对象,然后修改这个textView参数
//id是Snackbar内部定死了的。
TextView tv = (TextView) snackbarBaseView.findViewById(R.id.snackbar_text);
tv.setTextColor();//最好先定义了一个style,然后指定这个style给这个textView

3.3Action的参数设置

//先获得button对象,然后修改参数
Button btn = (Button) snackbarBaseView.findViewById(R.id.snackbar_action);

3.4添加icon,甚至是另外一个button等

//snackbarBaseView本身是一个容器View可以添加很多view进去
View snackbarBaseView = snackbar.getView();
chrView = LayoutInflater.from(context).inflate(int resource, ViewGroup root)
snackbarBaseView.addView(chrView,layoutParams)//添加如ImageView等view进来

参考文章

1.Snackbar
2.没时间解释了,快使用Snackbar!——Android Snackbar花式使用指南

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,387评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,845评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,091评论 0 246
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,308评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,662评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,795评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,008评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,743评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,466评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,687评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,181评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,531评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,177评论 3 239
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,126评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,902评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,862评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,734评论 2 274