Pop-up-Nachricht erstellen und einblenden

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

Mit Snackbar können Sie dem Nutzer eine kurze Nachricht anzeigen lassen. Im Gegensatz zu Benachrichtigungen verschwindet die Nachricht automatisch nach kurzer Zeit. Ein Snackbar ist ideal für kurze Nachrichten, auf die der Nutzer nicht reagieren muss. Eine E-Mail-Anwendung kann dem Nutzer beispielsweise mit einem Snackbar mitteilen, dass die Anwendung erfolgreich eine E-Mail gesendet hat.

CoordinatorLayout verwenden

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

  • Der Nutzer kann die Snackbar schließen, indem sie sie wegwischen.
  • Durch das Layout werden andere UI-Elemente verschoben, wenn Snackbar angezeigt wird. Wenn das Layout beispielsweise ein FloatingActionButton hat, wird die Schaltfläche nach oben verschoben, wenn ein Snackbar angezeigt wird, anstatt das Snackbar über der Schaltfläche zu zeichnen. Wie das aussieht, ist in Abbildung 1 zu sehen.

Die Klasse CoordinatorLayout ist eine Obermenge der Funktionen von FrameLayout. Wenn in Ihrer App bereits ein FrameLayout verwendet wird, können Sie dieses Layout durch ein CoordinatorLayout ersetzen, um die volle Snackbar-Funktionalität zu aktivieren. Wenn Ihre App andere Layoutobjekte verwendet, umschließen Sie die vorhandenen Layoutelemente in einem CoordinatorLayout, 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>

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

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

Nachricht anzeigen

Zum Anzeigen einer Nachricht sind zwei Schritte erforderlich. Zuerst erstellen Sie ein Snackbar-Objekt mit dem Nachrichtentext. Dann rufen Sie die Methode show() dieses Objekts auf, um dem Nutzer die Nachricht anzuzeigen.

Snackbar-Objekt erstellen

Rufen Sie die statische Methode Snackbar.make() auf, um ein Snackbar-Objekt zu erstellen. Geben Sie beim Erstellen des Snackbar die Mitteilung an, die angezeigt werden soll, und die Dauer, bis sie angezeigt werden soll:

Kotlin

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

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
Aufruf
Die Ansicht, an die das Snackbar angehängt werden soll. Die Methode sucht in der Ansichtshierarchie von der übergebenen Ansicht nach oben, bis ein CoordinatorLayout oder die Inhaltsansicht des Fensterdekors erreicht wird. Normalerweise ist es einfacher, das CoordinatorLayout zu übergeben, das deinen Inhalt umschließt.
String-ID
Die Ressourcen-ID der Mitteilung, die angezeigt werden soll. Dabei kann es sich um formatierten oder unformatierten Text handeln.
dauer
Die Zeitspanne, bis die Nachricht angezeigt wird. Dies kann LENGTH_SHORT oder LENGTH_LONG sein.

Dem Nutzer die Nachricht anzeigen

Nachdem Sie das Snackbar erstellt haben, rufen Sie seine show()-Methode auf, um das Snackbar für den Nutzer anzuzeigen:

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

Das System zeigt nicht mehrere Snackbar-Objekte gleichzeitig an. Wenn in der Ansicht derzeit ein anderes Snackbar angezeigt wird, stellt das System das Snackbar in die Warteschlange und zeigt es an, nachdem die aktuelle Snackbar abgelaufen oder verworfen wurde.

Wenn du dem Nutzer eine Nachricht anzeigen lassen und keine der Dienstprogrammmethoden des Snackbar-Objekts aufrufen musst, musst du den Verweis auf das Snackbar nach dem Aufruf von show() nicht beibehalten. Aus diesem Grund ist es üblich, die Methodenverkettung zu verwenden, um eine 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();