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 が必要です。
メッセージを表示する
メッセージを表示するには、2 つのステップがあります。まず、メッセージ テキストを含む 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
への参照を保持する必要はありません。このため、メソッド チェーンを使用して 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();