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 が必要です。
図 1. Snackbar
の表示時に CoordinatorLayout
によって FloatingActionButton
が上に移動する。
メッセージを表示する
メッセージを表示するには、2 つのステップがあります。まず、メッセージ テキストを含む Snackbar
オブジェクトを作成します。次に、そのオブジェクトの show()
メソッドを呼び出して、ユーザーにメッセージを表示します。
Snackbar オブジェクトを作成する
Snackbar
オブジェクトを作成するには、静的な Snackbar.make()
メソッドを呼び出します。Snackbar
を作成するときに、表示するメッセージと、メッセージの表示時間を指定します。
Kotlin
val mySnackbar = Snackbar.make(view, stringId, duration)
Java
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- 表示
Snackbar
をアタッチするビュー。このメソッドは、渡されたビューからCoordinatorLayout
またはウィンドウ装飾のコンテンツ ビューに達するまで、ビュー階層を検索します。通常、コンテンツを内包したCoordinatorLayout
を渡すだけの方法が最も簡単です。- stringId
- 表示するメッセージのリソース ID。書式付きまたは書式なしのテキストを指定できます。
- duration
- メッセージの表示時間の長さ。値は
LENGTH_SHORT
またはLENGTH_LONG
です。
ユーザーにメッセージを表示する
Snackbar
を作成したら、show()
メソッドを呼び出してユーザーに Snackbar
を表示します。
Kotlin
mySnackbar.show()
Java
mySnackbar.show();
複数の Snackbar
オブジェクトは同時に表示されません。現在、ビューで 1 つの Snackbar
が表示されている場合、別の Snackbar
はキューに入り、現在の Snackbar
が期限切れになるか、終了した後に表示されます。
ユーザーにメッセージを表示する場合で、Snackbar
オブジェクトのユーティリティ メソッドを呼び出す必要がなければ、show()
を呼び出した後に Snackbar
への参照を保持する必要はありません。そのため、1 つのステートメントで 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();