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 funkcji tworzenia wiadomości

Możesz użyć 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 wiadomości, na które użytkownik nie musi nic robić. Na przykład aplikacja do poczty e-mail może używać Snackbar, aby informować użytkownika o wysłaniu e-maila.

Użyj układu koordynatora

Element Snackbar jest dołączony do widoku. Obiekt Snackbar udostępnia podstawowe funkcje, o ile jest dołączony do dowolnego obiektu utworzonego z klasy View, na przykład dowolnego z popularnych obiektów układu. Jeśli jednak obiekt Snackbar zostanie dołączony do elementu CoordinatorLayout, interfejs Snackbar uzyska dodatkowe funkcje:

  • Użytkownik może zamknąć pole Snackbar, przesuwając ją.
  • Po wyświetleniu elementu Snackbar inne elementy interfejsu zostaną przeniesione. Jeśli na przykład w układzie znajduje się element FloatingActionButton, przycisk przesuwa przycisk w górę, gdy wyświetla się symbol Snackbar, a nie Snackbar na górze przycisku. Jak to wygląda, możesz zobaczyć na ilustracji 1.

Klasa CoordinatorLayout zawiera element nadrzędny funkcji FrameLayout. Jeśli Twoja aplikacja używa już FrameLayout, możesz zastąpić ten układ układem CoordinatorLayout, aby włączyć wszystkie funkcje Snackbar. Jeśli 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: CoordinatorLayout. Podczas wyświetlania wiadomości musisz mieć identyfikator szablonu.

Rysunek 1. Gdy pojawi się symbol Snackbar, element CoordinatorLayout przesuwa FloatingActionButton w górę.

Wyświetl wiadomość

Aby wyświetlić wiadomość, musisz wykonać 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 być wyświetlana, oraz 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 od przekazanego widoku aż do osiągnięcia CoordinatorLayout lub widoku treści dekoracji okien. Zwykle prościej jest przekazać element CoordinatorLayout obejmujący treści.
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. To może być LENGTH_SHORT lub LENGTH_LONG.

Pokaż 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 pokazuje wielu obiektów Snackbar jednocześnie, więc jeśli w widoku jest obecnie wyświetlany inny obiekt Snackbar, system umieści Snackbar w kolejce i wyświetli go po wygaśnięciu lub zamknięciu bieżącego pola Snackbar.

Jeśli chcesz wyświetlić wiadomość użytkownikowi i nie musisz wywoływać żadnej z metod narzędzi obiektu Snackbar, nie musisz zachowywać odwołania do Snackbar po wywołaniu show(). Z tego powodu często używa się łańcuchów metod do tworzenia i wyświetlania 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();