您可以使用 Snackbar
向使用者顯示簡短訊息。有別於通知,訊息會在一小段時間後自動消失。Snackbar
適用於使用者不需要採取行動的簡短訊息。舉例來說,電子郵件應用程式可以使用 Snackbar
告知使用者應用程式成功傳送電子郵件。
使用 CoordinatorLayout
Snackbar
已附加至檢視區塊。如果 Snackbar
附加至任何衍生自 View
類別的物件 (例如任何常見的版面配置物件),就會提供基本功能。不過,如果 Snackbar
附加至 CoordinatorLayout
,Snackbar
就會取得額外功能:
- 使用者只要向外滑動,即可關閉
Snackbar
。 - 版面配置會在
Snackbar
顯示時移動其他 UI 元素。舉例來說,如果版面配置有FloatingActionButton
,當版面配置顯示Snackbar
時,版面配置會向上移動,而不是在按鈕上方繪製Snackbar
。相關結果如圖 1 所示。
CoordinatorLayout
類別提供 FrameLayout
功能的超集。如果您的應用程式已使用 FrameLayout
,可以使用 CoordinatorLayout
取代該版面配置,以啟用完整的 Snackbar
功能。如果您的應用程式使用其他版面配置物件,請將現有的版面配置元素納入 CoordinatorLayout
,如以下範例所示:
<android.support.design.widget.CoordinatorLayout android:id="@+id/myCoordinatorLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Here are the existing layout elements, now wrapped in a CoordinatorLayout. --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- ...Toolbar, other layouts, other elements... --> </LinearLayout> </android.support.design.widget.CoordinatorLayout>
為 CoordinatorLayout
設定 android:id
標記。顯示訊息時,您需要提供版面配置的 ID。
顯示訊息
顯示訊息有兩個步驟。首先,請建立含有訊息文字的 Snackbar
物件。然後,呼叫該物件的 show()
方法,向使用者顯示訊息。
建立 Snackbar 物件
呼叫靜態 Snackbar.make()
方法來建立 Snackbar
物件。建立 Snackbar
時,請指定訊息顯示的訊息,以及顯示訊息的時間長度:
Kotlin
val mySnackbar = Snackbar.make(view, stringId, duration)
Java
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- 查看
-
要附加
Snackbar
的檢視畫面。該方法會從傳遞的檢視區塊中查詢檢視區塊階層,直到到達CoordinatorLayout
或視窗裝飾的內容檢視區塊為止。一般來說,傳遞包含內容的CoordinatorLayout
較為簡單。 - stringId
- 您要顯示訊息的資源 ID。可以是格式化或未設定的文字。
- 時間長度
-
顯示訊息的時間長度。可以是
LENGTH_SHORT
或LENGTH_LONG
。
向使用者顯示訊息
建立 Snackbar
後,請呼叫 show()
方法,向使用者顯示 Snackbar
:
Kotlin
mySnackbar.show()
Java
mySnackbar.show();
系統不會同時顯示多個 Snackbar
物件,因此如果檢視畫面目前顯示另一個 Snackbar
,系統會將 Snackbar
排入佇列,並在目前的 Snackbar
到期或關閉後顯示。
如果想向使用者顯示訊息,而且不需要呼叫任何 Snackbar
物件的任何公用程式方法,在呼叫 show()
後,就不需要保留對 Snackbar
的參照。因此,常見的做法是使用方法鏈結,在一個陳述式中建立並顯示 Snackbar
:
Kotlin
Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT ).show()
Java
Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT) .show();