Możesz użyć elementu Snackbar, aby wyświetlić użytkownikowi krótki komunikat. W przeciwieństwie do powiadomień komunikat znika automatycznie po krótkim czasie. Snackbar to idealne rozwiązanie w przypadku krótkich wiadomości, które nie wymagają od użytkownika żadnych działań. Na przykład aplikacja do poczty e-mail może używać Snackbar, aby poinformować użytkownika, że wysłała e-maila.
Używanie elementu CoordinatorLayout
Rola Snackbar jest powiązana z widokiem. Klasa Snackbar zapewnia podstawowe funkcje, jeśli jest dołączona do dowolnego obiektu pochodzącego z klasy View, np. do dowolnego z typowych obiektów układu. Jeśli jednak Snackbar jest
dołączony do
CoordinatorLayout,
Snackbar zyskuje dodatkowe funkcje:
- Użytkownik może odrzucić
Snackbar, przesuwając palcem. - Gdy pojawi się element
Snackbar, układ przesunie inne elementy interfejsu. Jeśli na przykład układ zawiera elementFloatingActionButton, to po wyświetleniu elementuSnackbarukład przesuwa przycisk w górę, zamiast rysować elementSnackbarna przycisku. Na rysunku 1 możesz zobaczyć, jak to wygląda.
Klasa CoordinatorLayout zapewnia nadzbiór funkcji klasy FrameLayout.
Jeśli Twoja aplikacja korzysta już z FrameLayout, możesz zastąpić ten układ elementem CoordinatorLayout, aby włączyć pełną funkcjonalność Snackbar. Jeśli aplikacja używa innych obiektów układu, umieść istniejące elementy układu w CoordinatorLayout, jak pokazano w tym przykładzie:
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myCoordinatorLayout" 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> </androidx.coordinatorlayout.widget.CoordinatorLayout>
Ustaw tag android:id dla urządzenia CoordinatorLayout.
Identyfikator układu jest potrzebny podczas wyświetlania wiadomości.
Rysunek 1. Gdy pojawi się ikona Snackbar, ikona CoordinatorLayout przesunie FloatingActionButton w górę.
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ć komunikat użytkownikowi.
Tworzenie obiektu Snackbar
Utwórz obiekt Snackbar, wywołując statyczną metodę Snackbar.make(). Podczas tworzenia Snackbar określ wyświetlany komunikat i czas jego wyświetlania:
val mySnackbar = Snackbar.make(view, stringId, duration)
- wyświetl
- Widok, do którego ma być dołączony element
Snackbar. Metoda przeszukuje hierarchię widoków od przekazanego widoku, aż dotrze doCoordinatorLayoutlub widoku treści dekoracji okna. Zwykle łatwiej jest przekazaćCoordinatorLayoutzawierający treść. - stringId
- 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_SHORTlubLENGTH_LONG.
Wyświetlanie komunikatu użytkownikowi
Po utworzeniu obiektu Snackbar wywołaj jego metodę show(), aby wyświetlić Snackbar użytkownikowi:
mySnackbar.show()
System nie wyświetla jednocześnie wielu obiektów Snackbar, więc jeśli w widoku jest obecnie wyświetlany inny obiekt Snackbar, system umieszcza Twój obiekt Snackbar w kolejce i wyświetla go po wygaśnięciu lub zamknięciu bieżącego obiektu Snackbar.
Jeśli chcesz wyświetlić użytkownikowi komunikat i nie musisz wywoływać żadnych metod narzędziowych obiektu Snackbar, nie musisz zachowywać odwołania do Snackbar po wywołaniu show(). Z tego powodu często używa się łańcucha metod do utworzenia i wyświetlenia elementu Snackbar w jednej instrukcji:
Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT ).show()