Part 2 – 拥抱Snackbar, 和Toast说再见(翻译)

原文地址: 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 设置一些额外的配置,例如setActionTextColorsetDuration

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。