Pop-up-Nachricht erstellen und einblenden

Compose-Ansatz 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 verschwindet die Meldung nach kurzer Zeit automatisch. 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-Klasse bietet grundlegende Funktionen, wenn sie an ein beliebiges Objekt angehängt wird, das von der View-Klasse abgeleitet ist, z. B. an eines der gängigen Layoutobjekte. Wenn die Snackbar jedoch an eine CoordinatorLayout angehängt ist, erhält sie zusätzliche Funktionen:Snackbar

  • Der Nutzer kann die Snackbar durch Wischen schließen.
  • Durch das Layout werden andere UI-Elemente verschoben, wenn Snackbar angezeigt wird. Wenn das Layout beispielsweise ein FloatingActionButton enthält, wird der Button im Layout nach oben verschoben, wenn ein Snackbar angezeigt wird, anstatt das Snackbar über dem Button 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 alle Snackbar-Funktionen zu nutzen. Wenn Ihre App andere Layoutobjekte verwendet, schließen Sie die vorhandenen Layoutelemente in ein CoordinatorLayout ein, wie im folgenden Beispiel gezeigt:

<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myCoordinatorLayout"
    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>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

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

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

Nachricht anzeigen

Das Anzeigen einer Nachricht erfolgt in zwei Schritten. Zuerst erstellen Sie ein Snackbar-Objekt mit dem Nachrichtentext. Anschließend rufen Sie die Methode show() des Objekts auf, um die Nachricht für den 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:

val mySnackbar = Snackbar.make(view, stringId, duration)
Ansicht
Die Ansicht, an die der Snackbar angehängt werden soll. Die Methode durchsucht die Ansichtshierarchie von der übergebenen Ansicht aus, bis sie eine CoordinatorLayout oder die Inhaltsansicht der Fensterdekoration 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 dem Nutzer anzeigen

Nachdem Sie das Snackbar erstellt haben, rufen Sie die Methode show() auf, um das Snackbar dem Nutzer zu präsentieren:

mySnackbar.show()

Das System zeigt nicht mehrere Snackbar-Objekte gleichzeitig an. Wenn also in der Ansicht gerade ein anderes Snackbar angezeigt wird, wird Ihr Snackbar in die Warteschlange gestellt 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:

Snackbar.make(
    findViewById(R.id.myCoordinatorLayout),
    R.string.email_sent,
    Snackbar.LENGTH_SHORT
).show()