Możesz użyć Snackbar
, aby wyświetlić użytkownikowi krótką wiadomość. W przeciwieństwie do powiadomień wiadomość automatycznie znika po krótkim czasie. Snackbar
jest idealnym rozwiązaniem w przypadku krótkich wiadomości, na które użytkownik nie musi nic robić. Na przykład aplikacja do poczty e-mail może używać Snackbar
, aby informować użytkownika o wysłaniu e-maila.
Użyj układu koordynatora
Element Snackbar
jest dołączony do widoku. Obiekt Snackbar
udostępnia podstawowe funkcje, o ile jest dołączony do dowolnego obiektu utworzonego z klasy View
, na przykład dowolnego z popularnych obiektów układu. Jeśli jednak obiekt Snackbar
zostanie dołączony do elementu CoordinatorLayout
, interfejs Snackbar
uzyska dodatkowe funkcje:
- Użytkownik może zamknąć pole
Snackbar
, przesuwając ją. - Po wyświetleniu elementu
Snackbar
inne elementy interfejsu zostaną przeniesione. Jeśli na przykład w układzie znajduje się elementFloatingActionButton
, przycisk przesuwa przycisk w górę, gdy wyświetla się symbolSnackbar
, a nieSnackbar
na górze przycisku. Jak to wygląda, możesz zobaczyć na ilustracji 1.
Klasa CoordinatorLayout
zawiera element nadrzędny funkcji FrameLayout
.
Jeśli Twoja aplikacja używa już FrameLayout
, możesz zastąpić ten układ układem CoordinatorLayout
, aby włączyć wszystkie funkcje Snackbar
. Jeśli aplikacja używa innych obiektów układu, umieść dotychczasowe elementy układu w elemencie CoordinatorLayout
, jak w tym przykładzie:
<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>
Ustaw tag android:id
dla: CoordinatorLayout
.
Podczas wyświetlania wiadomości musisz mieć identyfikator szablonu.
Wyświetl wiadomość
Aby wyświetlić wiadomość, musisz wykonać 2 czynności. Najpierw tworzysz obiekt Snackbar
z tekstem wiadomości. Następnie wywołujesz metodę show()
tego obiektu, aby wyświetlić wiadomość użytkownikowi.
Tworzenie obiektu Snackbar
Utwórz obiekt Snackbar
, wywołując metodę statyczną Snackbar.make()
. Podczas tworzenia Snackbar
określ wiadomość, która ma być wyświetlana, oraz czas jej wyświetlania:
Kotlin
val mySnackbar = Snackbar.make(view, stringId, duration)
Java
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- wyświetlenie
- Widok, do którego chcesz dołączyć element
Snackbar
. Metoda przeszukuje hierarchię widoków od przekazanego widoku aż do osiągnięciaCoordinatorLayout
lub widoku treści dekoracji okien. Zwykle prościej jest przekazać elementCoordinatorLayout
obejmujący treści. - Identyfikator ciągu
- Identyfikator zasobu wiadomości, którą chcesz wyświetlić. Może to być tekst sformatowany lub niesformatowany.
- czas trwania
- Czas wyświetlania wiadomości. To może być
LENGTH_SHORT
lubLENGTH_LONG
.
Pokaż wiadomość użytkownikowi
Po utworzeniu obiektu Snackbar
wywołaj jego metodę show()
, aby wyświetlić Snackbar
użytkownikowi:
Kotlin
mySnackbar.show()
Java
mySnackbar.show();
System nie pokazuje wielu obiektów Snackbar
jednocześnie, więc jeśli w widoku jest obecnie wyświetlany inny obiekt Snackbar
, system umieści Snackbar
w kolejce i wyświetli go po wygaśnięciu lub zamknięciu bieżącego pola Snackbar
.
Jeśli chcesz wyświetlić wiadomość użytkownikowi i nie musisz wywoływać żadnej z metod narzędzi obiektu Snackbar
, nie musisz zachowywać odwołania do Snackbar
po wywołaniu show()
. Z tego powodu często używa się łańcuchów metod do tworzenia i wyświetlania Snackbar
w jednej instrukcji:
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();