还在用Toast?你Out啦,试试Snackbar吧!
2015-07-13 15:22
274 查看
Welcome Snackbar, Goodbye Toast!
“Providing lightweight, quick feedback about an operation is a perfect opportunity to use a snackbar.”
Snackbar是design support library中另一个组件,使用Snackbar我们可以在屏幕底部(大多时候)快速弹出消息,它和Toast非常相似,但是它更灵活一些。
当它显示一段时间后或用户与屏幕交互时它会自动消失。
可以自定义action-可选操作。
swiping it off the screen可以让FAB消失
它是context sensitive message(自己理解吧),所以这些消息是UI screen的一部分并且它是显示在所有屏幕其它元素之上(屏幕最顶层),并不是像Toast一样覆盖在屏幕上。
同一时间只能显示一个snackbar。
Snackbar基本上继承了和Toast一样的方法和属性,例如LENGTH_LONG 和 LENGTH_SHORT用于设置显示时长。
我们看一下如何使用:
make() – 生成Snackbar消息
setAction() – 设置action
make() – 显示Snackbar消息
make()方法的第一个参数是一个view, snackbar会试着寻找一个父view来hold这个view. Snackbar将遍历整个view tree 来寻找一个合适的父view,它可能是一个coordinatorLayout也可能是window decor’s content view,随便哪一个都行。
正如上面所提到,duration参数和Toast中的duration参数类似,只能是LENGTH_SHORT 或 LENGTH_LONG,不能是其它任何随机数。
部局文件中rootlayout是framelayout并且添加了FAB(Floating action button),看一下FAB示例:
点击FAB查看结果:
![](https://camo.githubusercontent.com/c6a0c233f32ac4dec5531c002cf489fac340a744/687474703a2f2f7777772e746563686e6f74616c6b61746976652e636f6d2f77702d636f6e74656e742f75706c6f6164732f323031352f30362f536e61636b6261722d6672616d656c61796f7574312e676966)
程序没问题,但是对于用户体验来说并不太好,它应该向上移一些,如下图所示:
Having a CoordinatorLayout in your view hierarchy allows Snackbar to enable certain features, such as swipe-to-dismiss and automatically moving of widgets like FloatingActionButton.
我们在该系列文章的下一部分讨论CoordinatorLayout。
![](https://camo.githubusercontent.com/36333e9f97ca42d93b56ee6adfe3a49956fcc400/687474703a2f2f7777772e746563686e6f74616c6b61746976652e636f6d2f77702d636f6e74656e742f75706c6f6164732f323031352f30362f536e61636b6261722d776974682d436f6f7264696e61746f724c61796f7574312e676966)
我们可以使用额外的可选操作来配置snackbar,比如setActionTextColor 和 setDuration:
下载示例代码:https://github.com/PareshMayani/DesignSupportLibraryExamples
参考文档: https://developer.android.com/reference/android/support/design/widget/Snackbar.html
在这部分文章中,我们讨论了Snackbar,它和TOAST很相似,但是它更灵活一些。Snackbar中可以定义action,当用户与屏幕交互时或者显示一段时间后会自动消失。
“Providing lightweight, quick feedback about an operation is a perfect opportunity to use a snackbar.”
Snackbar是design support library中另一个组件,使用Snackbar我们可以在屏幕底部(大多时候)快速弹出消息,它和Toast非常相似,但是它更灵活一些。
当它显示一段时间后或用户与屏幕交互时它会自动消失。
可以自定义action-可选操作。
swiping it off the screen可以让FAB消失
它是context sensitive message(自己理解吧),所以这些消息是UI screen的一部分并且它是显示在所有屏幕其它元素之上(屏幕最顶层),并不是像Toast一样覆盖在屏幕上。
同一时间只能显示一个snackbar。
Snackbar基本上继承了和Toast一样的方法和属性,例如LENGTH_LONG 和 LENGTH_SHORT用于设置显示时长。
如何使用
我们看一下如何使用:Snackbar.make(view, message, duration) .setAction(action message, click listener) .show();
方法:
make() – 生成Snackbar消息setAction() – 设置action
make() – 显示Snackbar消息
属性:
make()方法的第一个参数是一个view, snackbar会试着寻找一个父view来hold这个view. Snackbar将遍历整个view tree 来寻找一个合适的父view,它可能是一个coordinatorLayout也可能是window decor’s content view,随便哪一个都行。正如上面所提到,duration参数和Toast中的duration参数类似,只能是LENGTH_SHORT 或 LENGTH_LONG,不能是其它任何随机数。
示例:
Snackbar.make(rootlayout, "Hello SnackBar!", Snackbar.LENGTH_SHORT) .setAction("Undo", new View.OnClickListener() { @Override public void onClick(View v) { // Perform anything for the action selected } }) .show();
部局文件中rootlayout是framelayout并且添加了FAB(Floating action button),看一下FAB示例:
点击FAB查看结果:
程序没问题,但是对于用户体验来说并不太好,它应该向上移一些,如下图所示:
Having a CoordinatorLayout in your view hierarchy allows Snackbar to enable certain features, such as swipe-to-dismiss and automatically moving of widgets like FloatingActionButton.
我们在该系列文章的下一部分讨论CoordinatorLayout。
配置Snackbar可选操作
我们可以使用额外的可选操作来配置snackbar,比如setActionTextColor 和 setDuration:Snackbar.make(rootlayout, "Hello SnackBar!", Snackbar.LENGTH_SHORT) .setAction("Undo", new View.OnClickListener() { @Override public void onClick(View v) { // Perform anything for the action selected } }) .setActionTextColor(R.color.material_blue) .setDuration(4000).show();
下载示例代码:https://github.com/PareshMayani/DesignSupportLibraryExamples
参考文档: https://developer.android.com/reference/android/support/design/widget/Snackbar.html
总结
在这部分文章中,我们讨论了Snackbar,它和TOAST很相似,但是它更灵活一些。Snackbar中可以定义action,当用户与屏幕交互时或者显示一段时间后会自动消失。
相关文章推荐
- Tomcat能够在eclipse里启动,但是不能访问首页的问题
- Eclipse4.4 创建Maven项目
- 协议的实现
- 经典管理学定律6 - 刺猬法则
- Qt批量操作Excel
- iOS开发系列--UITableView全面解析
- UITableViewCell自适应高度
- 如何优化cocos2d/x程序的内存使用和程序大小
- sqlist顺序表
- dsfgsdfg
- 通信错误:(-1)[描述:无法解析路由器DDNS地址,请检查DDNS状态.] 解析办法
- C# List中写出LINQ类似SQL的语句
- linux下svn命令大全
- demo_扫雷小游戏初始化
- 根据不同浏览器选择jquery版本
- 黑马程序员— 4000 —Java要点笔记——String类
- 树莓派搭建简易的NAS服务器
- 滑动抽屉
- 关于java.lang.reflect.InvocationTargetException(jar 包缺少或者冲突)的错误
- Android5.1 电池充电剩余时间计算