Pop-up-Nachricht erstellen und einblenden

Compose ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Informationen zum Hinzufügen von Benachrichtigungen in Compose

Sie können mit Snackbar eine kurze Nachricht für den Nutzer anzeigen. Im Gegensatz zu Benachrichtigungen wird die Meldung nach kurzer Zeit automatisch ausgeblendet. Eine Snackbar ist ideal für kurze Nachrichten, auf die der Nutzer nicht reagieren muss. Eine E‑Mail-App kann beispielsweise ein Snackbar verwenden, um dem Nutzer mitzuteilen, dass die App eine E‑Mail gesendet hat.

CoordinatorLayout verwenden

Eine Snackbar ist mit einer Ansicht verknüpft. Die Snackbar bietet grundlegende Funktionen, wenn sie an ein beliebiges Objekt angehängt wird, das von der Klasse View abgeleitet ist, z. B. an eines der gängigen Layoutobjekte. Wenn die Snackbar jedoch an ein CoordinatorLayout angehängt ist, erhält sie zusätzliche Funktionen:Snackbar

  • Der Nutzer kann die Snackbar durch Wischen schließen.
  • Das Layout verschiebt andere UI-Elemente, wenn Snackbar angezeigt wird. Wenn das Layout beispielsweise ein FloatingActionButton enthält, wird die Schaltfläche nach oben verschoben, wenn ein Snackbar angezeigt wird, anstatt das Snackbar über der Schaltfläche zu zeichnen. Abbildung 1 zeigt, wie das aussieht.

Die Klasse CoordinatorLayout bietet eine Obermenge der Funktionen von FrameLayout. Wenn Ihre App bereits ein FrameLayout verwendet, können Sie dieses Layout durch ein CoordinatorLayout ersetzen, um die volle Snackbar-Funktionalität zu aktivieren. Wenn Ihre App andere Layoutobjekte verwendet, schließen Sie die vorhandenen Layoutelemente in ein CoordinatorLayout ein, wie im folgenden Beispiel gezeigt:

<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>

Legen Sie ein android:id-Tag für Ihre CoordinatorLayout fest. Sie benötigen die ID des Layouts, wenn Sie die Mitteilung anzeigen.

Abbildung 1. Mit CoordinatorLayout wird FloatingActionButton nach oben verschoben, wenn Snackbar angezeigt wird.

Nachricht anzeigen

Es sind zwei Schritte erforderlich, um eine Nachricht anzuzeigen. Zuerst erstellen Sie ein Snackbar-Objekt mit dem Nachrichtentext. Anschließend rufen Sie die Methode show() des Objekts auf, um die Nachricht dem Nutzer anzuzeigen.

Snackbar-Objekt erstellen

Erstellen Sie ein Snackbar-Objekt, indem Sie die statische Methode Snackbar.make() aufrufen. Wenn Sie Snackbar erstellen, geben Sie die Meldung an, die angezeigt werden soll, und die Dauer, für die die Meldung angezeigt werden soll:

Kotlin

val mySnackbar = Snackbar.make(view, stringId, duration)

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
Ansicht
Die Ansicht, an die das Snackbar angehängt werden soll. Die Methode durchsucht die Ansichtshierarchie von der übergebenen Ansicht aus, bis sie eine CoordinatorLayout oder die Inhaltsansicht des Fensterrahmens erreicht. Normalerweise ist es einfacher, das CoordinatorLayout-Tag zu übergeben, das Ihre Inhalte umschließt.
stringId
Die Ressourcen-ID der Nachricht, die Sie anzeigen möchten. Das kann formatierter oder unformatierter Text sein.
Dauer
Die Dauer, für die die Nachricht angezeigt werden soll. Das kann LENGTH_SHORT oder LENGTH_LONG sein.

Nachricht für den Nutzer anzeigen

Rufen Sie nach dem Erstellen des Snackbar die zugehörige show()-Methode auf, um das Snackbar dem Nutzer zu präsentieren:

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

Das System zeigt nicht mehrere Snackbar-Objekte gleichzeitig an. Wenn in der Ansicht also gerade ein anderes Snackbar angezeigt wird, wird Ihr Snackbar in die Warteschlange eingereiht und angezeigt, nachdem das aktuelle Snackbar abgelaufen oder geschlossen wurde.

Wenn Sie dem Nutzer eine Nachricht anzeigen möchten und keine der Hilfsmethoden des Snackbar-Objekts aufrufen müssen, müssen Sie die Referenz zu Snackbar nicht beibehalten, nachdem Sie show() aufgerufen haben. Aus diesem Grund ist es üblich, Method Chaining zu verwenden, um ein Snackbar in einer Anweisung zu erstellen und anzuzeigen:

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