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();