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 einFloatingActionButton
hat, wird die Schaltfläche nach oben verschoben, wenn einSnackbar
angezeigt wird, anstatt dasSnackbar
ü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.
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 einCoordinatorLayout
oder die Inhaltsansicht des Fensterdekors erreicht wird. Normalerweise ist es einfacher, dasCoordinatorLayout
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
oderLENGTH_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();