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
Snackbardurch Wischen schließen. - Das Layout verschiebt andere UI-Elemente, wenn
Snackbarangezeigt wird. Wenn das Layout beispielsweise einFloatingActionButtonenthält, wird die Schaltfläche nach oben verschoben, wenn einSnackbarangezeigt wird, anstatt dasSnackbarü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
Snackbarangehängt werden soll. Die Methode durchsucht die Ansichtshierarchie von der übergebenen Ansicht aus, bis sie eineCoordinatorLayoutoder die Inhaltsansicht des Fensterrahmens erreicht. Normalerweise ist es einfacher, dasCoordinatorLayout-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_SHORToderLENGTH_LONGsein.
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();