原文地址: http://www.technotalkative.com/part-2-welcome-snackbar-goodbye-toast/
这是 Android design support library 教程系列的第二部分。在第一篇文章我们讲了关于
Floating action button的属性使用和一些 FAB 使用中会遇到的一些问题。
今天我们来学习另外一个控件“Snackbar”。
拥抱 Snackbar,和 Toast 说再见!
Snackbar 提供轻量级、方便、快速的反馈操作。
Snackbar 是 design support library 中的一个部件,我们可以使用它在屏幕底部显示一个消息。它就像我们以前用的 Toast,但,它更灵活一些:
- 超时后它会自动消失,或者,用户操作反馈后自动消失
- 它可以包含一些可供选择操作在里面
- 我们可以通过点击屏幕后令它消失
- 它是根据上下文来显示消息的,它是 UI 的一部分,并且在所有的 UI 上面显示,不像 Toast 是可以跨越自己应用显示在屏幕上的
- 在同一时间内,仅且只能显示一个 snackbar
Snackbar 里面大部分方法和属性都和 Toast 很像,例如在显示时间上的设置 LENGTH_LONG 和 LENGTH_SHORT。
我们来看看 Snackbar 的语法:
1 2 3 | Snackbar.make(view, message, duration) .setAction(action message, click listener) .show(); |
方法:
make()
- 在 Snackbar 上面显示一个消息setAction()
- 设置反馈响应事件show()
- 显示一个 Snackbar
属性
- make() 的第一个传入的参数是一个 view,snackbar 需要一个父 view 作为这个参数,可以传入任何一个合适的父 view,甚至是 coordinatorLayout 或者 decorView。
- 上面已经提到过和 Toast 设置好像的显示时间长短,可以选择 LENGTH_SHORT 或者 LENGTH_LONG。
Example:
1 2 3 4 5 6 7 8 | 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(); |
在这里,根布局元素是放置了 FAB 的 framelayout,可以看一看 FAB 的例子的布局代码。
点击 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
:
1 2 3 4 5 6 7 8 9 | 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
总结:
在这一 part,我们学习了 Snackbar,Snackbar 就是一个比 TOAST 更灵活的显示消息提示的通知控件,它还可以设置一个反馈操作,点击屏幕任何位置它会自动消失,或者超时后它也会自动消失。
我们将会在 CoordinatorLayout 看到 Snackbar 更多的效果和行为反馈,我们将会在下一篇文章学习 CoordinatorLayout。