Możesz użyć elementu 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 komunikatów, w których użytkownik nie musi wykonywać żadnych działań. Aplikacja e-mailowa może na przykład użyć elementu Snackbar
, aby poinformować użytkownika, że e-mail został wysłany przez aplikację.
Użyj układu koordynatora
Element Snackbar
został dołączony do widoku danych. Obiekt Snackbar
udostępnia podstawowe funkcje, jeśli jest dołączony do dowolnego obiektu pochodzącego z klasy View
, np. do popularnych obiektów układu. Jeśli jednak Snackbar
jest połączony z CoordinatorLayout
, Snackbar
zyskuje dodatkowe funkcje:
- Użytkownik może zamknąć aplikację
Snackbar
, przesuwając ją. - Gdy pojawia się
Snackbar
, układ przesuwa inne elementy interfejsu. Jeśli na przykład układ zawiera elementFloatingActionButton
, przesuwa przycisk w górę, gdy wyświetla sięSnackbar
, zamiast rysowaćSnackbar
na jego górze. Widać to na ilustracji 1.
Klasa CoordinatorLayout
stanowi nadzbiór funkcji interfejsu FrameLayout
.
Jeśli Twoja aplikacja korzysta już z komponentu FrameLayout
, możesz zastąpić ten układ elementem CoordinatorLayout
, by uzyskać dostęp do wszystkich funkcji Snackbar
. Jeśli Twoja 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 elementu CoordinatorLayout
.
Do wyświetlania wiadomości potrzebny jest identyfikator układu.
Wyświetl wiadomość
Aby wyświetlić wiadomość, wykonaj 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 się wyświetlać, i określ 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 z przekazywanego widoku aż do osiągnięcia poziomuCoordinatorLayout
lub widoku zawartości dekoracji okna. Zazwyczaj prościej jest przekazać treść zawartą w plikuCoordinatorLayout
. - 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. Może to być
LENGTH_SHORT
lubLENGTH_LONG
.
Wyświetl 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 wyświetla wielu obiektów Snackbar
jednocześnie, więc jeśli w widoku wyświetla się obecnie inny obiekt Snackbar
, system umieszcza w kolejce inny obiekt Snackbar
i wyświetla go, gdy bieżący obiekt Snackbar
wygaśnie lub zostanie zamknięty.
Jeśli chcesz wyświetlić komunikat użytkownikowi i nie musisz wywoływać żadnych metod narzędziowych obiektu Snackbar
, nie musisz zachowywać odwołania do Snackbar
po wywołaniu metody show()
. Z tego względu łańcuch metod jest często używany do tworzenia i wyświetlania elementu 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();