ポップアップ メッセージを作成して表示する

Compose を試す
Jetpack Compose は Android で推奨される UI ツールキットです。Compose で通知を追加する方法を学習します。

Snackbar を使用すると、ユーザーに短いメッセージを表示できます。通知とは異なり、メッセージはしばらくすると自動的に消えます。Snackbar は、ユーザーが操作する必要がない短いメッセージに最適です。たとえば、メールアプリでは Snackbar を使用して、メールが正常に送信されたことをユーザーに知らせることができます。

CoordinatorLayout を使用する

Snackbar はビューにアタッチされます。Snackbar は、一般的なレイアウト オブジェクトなど、View クラスから派生したオブジェクトにアタッチされている場合、基本的な機能を提供します。ただし、SnackbarCoordinatorLayout に接続されている場合、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>

CoordinatorLayoutandroid:id タグを設定します。メッセージを表示するには、レイアウトの ID が必要です。

図 1. CoordinatorLayout は、Snackbar が表示されたときに FloatingActionButton を上に移動します。

メッセージを表示する

メッセージを表示するには、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();