添加 Snackbar

材料设计的主要特征之一是添加了 Snackbar,理论上它取代了以前的 Toast。根据 Android 文档:

Snackbars 包含与执行操作直接相关的单行文本。它们可能包含文本操作,但没有图标。Toasts 主要用于系统消息传递。它们也显示在屏幕的底部,但可能无法在屏幕外滑动。

StackOverflow 文档

Toast 仍然可以在 Android 中用于向用户显示消息,但是如果你决定在应用中选择使用材料设计,则建议你实际使用快餐栏。Snackbar 从底部弹出,而不是在屏幕上显示为叠加层。

以下是它的完成方式:

Snackbar snackbar = Snackbar
        .make(coordinatorLayout, "Here is your new Snackbar", Snackbar.LENGTH_LONG);
snackbar.show();

至于显示 Snackbar 的时间长度,我们有类似于 Toast 提供的选项,或者我们可以设置自定义持续时间(以毫秒为单位):

  • LENGTH_SHORT
  • LENGTH_LONG
  • LENGTH_INDEFINITE
  • setDuration()(自版本 22.2.1

你还可以为 Snackbar 添加动态功能,例如 ActionCallback 或自定义颜色。但是在定制 Snackbar 时请注意 Android 提供的设计指南

然而,实现 Snackbar 有一个限制。你要实现 Snackbar 的视图的父布局需要是一个 CoordinatorLayout。这样就可以从底部获得实际的弹出窗口。

这是如何在布局 xml 文件中定义 CoordinatorLayout

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/coordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    //any other widgets in your layout go here.
 
</android.support.design.widget.CoordinatorLayout>

然后需要在 Activity 的 onCreate 方法中定义 CoordinatorLayout,然后在创建 Snackbar 本身时使用。

有关 Snackbar 的更多信息,请查看官方文档文档中专用主题