新增 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 的更多資訊,請檢視官方文件文件中專用主題