Tworzenie i wyświetlanie wyskakującej wiadomości

Wypróbuj sposób tworzenia wiadomości
Jetpack Compose to zalecany zestaw narzędzi UI na Androida. Dowiedz się, jak dodawać powiadomienia w sekcji Utwórz

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 element FloatingActionButton, 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.

Rysunek 1. CoordinatorLayout przesuwa FloatingActionButton w górę, gdy pojawia się Snackbar.

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 poziomu CoordinatorLayout lub widoku zawartości dekoracji okna. Zazwyczaj prościej jest przekazać treść zawartą w pliku CoordinatorLayout.
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 lub LENGTH_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();