Tworzenie i wyświetlanie wyskakującej wiadomości

Wypróbuj metodę Compose
Jetpack Compose to zalecany zestaw narzędzi interfejsu na Androida. Dowiedz się, jak dodawać powiadomienia w Compose.

Możesz użyć elementu Snackbar, aby wyświetlić użytkownikowi krótki komunikat. W przeciwieństwie do powiadomień komunikat automatycznie znika po krótkim czasie. Snackbar jest idealny w przypadku krótkich wiadomości, na które użytkownik nie musi odpowiadać. 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. Snackbar zapewnia podstawową funkcjonalność, jeśli jest dołączony do dowolnego obiektu pochodzącego z klasyView, np. do dowolnego z popularnych obiektów układu. Jeśli jednak Snackbar jest dołączony do CoordinatorLayout, zyskuje dodatkowe funkcje:Snackbar

  • Użytkownik może odrzucić Snackbar, przesuwając palcem.
  • Gdy pojawi się ikona Snackbar, układ przesunie inne elementy interfejsu. Jeśli na przykład układ ma znak FloatingActionButton, układ przesuwa przycisk w górę, gdy wyświetla znak Snackbar, zamiast rysować go na przycisku.Snackbar Na rysunku 1 widać, 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 układem CoordinatorLayout, aby włączyć pełną funkcjonalność Snackbar. Jeśli Twoja aplikacja używa innych obiektów układu, umieść istniejące elementy układu w CoordinatorLayout, jak pokazano 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 urządzenia CoordinatorLayout. Identyfikator układu jest potrzebny podczas wyświetlania wiadomości.

Rysunek 1. CoordinatorLayout przesuwa FloatingActionButton w górę, gdy pojawi 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ć komunikat użytkownikowi.

Tworzenie obiektu Snackbar

Utwórz obiekt Snackbar, wywołując statyczną metodę Snackbar.make(). Podczas tworzenia Snackbar określ wyświetlaną wiadomość i czas jej wyświetlania:

Kotlin

val mySnackbar = Snackbar.make(view, stringId, duration)

Java

Snackbar 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 do CoordinatorLayout lub widoku treści dekoracji okna. Zwykle łatwiej jest przekazać element CoordinatorLayout zawierają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_SHORT lubLENGTH_LONG.

Wyświetlanie komunikatu 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 wielu obiektów Snackbar jednocześnie, 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 wiadomość 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 obiektu 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();