Możesz użyć elementu Snackbar
, aby wyświetlić użytkownikowi krótki komunikat. W przeciwieństwie do powiadomień wiadomość zniknie automatycznie po krótkim czasie. Snackbar
jest idealny do krótkich wiadomości, na które użytkownik nie musi reagować. Na przykład aplikacja pocztowa może używać Snackbar
, aby poinformować użytkownika o tym, że e-mail został wysłany.
Używanie CoordinatorLayout
Do widoku jest dołączony element multimedialny Snackbar
. Element Snackbar
zapewnia podstawowe funkcje, jeśli jest dołączony do dowolnego obiektu pochodnego od klasy View
, np. do dowolnego z powszechnie używanych obiektów układu. Jeśli jednak Snackbar
jest dołączony do CoordinatorLayout
, Snackbar
zyskuje dodatkowe funkcje:
- Użytkownik może zamknąć
Snackbar
, przesuwając go w bok. - Układ przesuwa inne elementy interfejsu, gdy pojawia się
Snackbar
. Jeśli na przykład układ zawiera elementFloatingActionButton
, przesuwa on przycisk w górę, gdy wyświetla się elementSnackbar
, zamiast rysować elementSnackbar
na przycisku. Jak to wygląda, widać na rysunku 1.
Klasa CoordinatorLayout
udostępnia superzbiór funkcji klasy FrameLayout
.
Jeśli Twoja aplikacja korzysta już z poziomu FrameLayout
, możesz zastąpić ten układ układem CoordinatorLayout
, aby uzyskać pełną funkcjonalność Snackbar
. Jeśli Twoja aplikacja używa innych obiektów układu, owiń istniejące elementy układu w element 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 potrzebujesz identyfikatora układu.
Rysunek 1. CoordinatorLayout
przesuwa FloatingActionButton
w górę, gdy pojawia się Snackbar
.
Wyświetlanie wiadomości
Wyświetlanie wiadomości składa się z 2 etapów. Najpierw utwórz 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 stałą metodę Snackbar.make()
. Podczas tworzenia Snackbar
określ wyświetlany komunikat i czas jego wyświetlania:
Kotlin
val mySnackbar = Snackbar.make(view, stringId, duration)
Java
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- wyświetl
-
Widok, do którego chcesz dołączyć
Snackbar
. Metoda przeszukuje hierarchię widoków od przekazanego widoku do momentu, aż dotrze do widoku treściCoordinatorLayout
lub okna dekoracji okna. Zwykle łatwiej jest przekazaćCoordinatorLayout
otaczający treści. - stringId
- Identyfikator zasobu wiadomości, którą chcesz wyświetlić. Może to być sformatowany lub niesformatowany tekst.
- czas trwania
- Czas wyświetlania wiadomości. Może to być
LENGTH_SHORT
lubLENGTH_LONG
.
Wyświetlanie wiadomości użytkownikowi
Po utworzeniu obiektu Snackbar
wywołaj jego metodę show()
, aby wyświetlić użytkownikowi obiekt Snackbar
:
Kotlin
mySnackbar.show()
Java
mySnackbar.show();
System nie wyświetla jednocześnie wielu obiektów Snackbar
, więc jeśli widok wyświetla obecnie inny obiekt Snackbar
, system wstawia do kolejki obiekt Snackbar
i wyświetla go po wygaśnięciu lub odrzuceniu bieżącego obiektu Snackbar
.
Jeśli chcesz wyświetlić użytkownikowi wiadomość i nie musisz wywoływać żadnej z metod pomocniczych obiektu Snackbar
, nie musisz zachowywać odwołania do obiektu Snackbar
po wywołaniu metody show()
. Z tego powodu często stosuje się łańcuch metod, aby utworzyć i wyświetlić obiekt Snackbar
w jednym poleceniu:
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();