Tworzenie i wyświetlanie wyskakującej wiadomości

Wypróbuj tworzenie wiadomości
Jetpack Compose to zalecany zestaw narzędzi interfejsu na Androida. Dowiedz się, jak dodawać powiadomienia w sekcji Redagowanie.

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 element FloatingActionButton, przesuwa on przycisk w górę, gdy wyświetla się element Snackbar, zamiast rysować element Snackbar 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ści CoordinatorLayout lub okna dekoracji okna. Zwykle łatwiej jest przekazać CoordinatorLayoutotaczają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 lub LENGTH_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();