Creare e visualizzare un messaggio popup

Prova il metodo Scrivi
Jetpack Compose è il toolkit consigliato per la UI per Android. Scopri come aggiungere notifiche in Compose.

Puoi utilizzare un Snackbar per mostrare un breve messaggio all'utente. A differenza delle Notifiche, il messaggio scompare automaticamente dopo un breve periodo di tempo. Snackbar è ideale per i messaggi brevi su cui l'utente non deve intervenire. Ad esempio, un'app email può utilizzare un Snackbar per comunicare all'utente che l'app ha inviato un'email correttamente.

Usa un layout Coordinator

Un Snackbar è collegato a una vista. Snackbar offre funzionalità di base se è collegato a qualsiasi oggetto derivato dalla classe View, come qualsiasi oggetto di layout comune. Tuttavia, se Snackbar è associato a un CoordinatorLayout, l'Snackbar ottiene funzionalità aggiuntive:

  • L'utente può ignorare Snackbar facendolo scorrere per nasconderlo.
  • Il layout sposta altri elementi UI quando viene visualizzato Snackbar. Ad esempio, se il layout ha un FloatingActionButton, il layout sposta il pulsante verso l'alto quando mostra un Snackbar, invece di disegnare il Snackbar sopra il pulsante. Puoi vedere come si presenta nella Figura 1.

La classe CoordinatorLayout fornisce un soprainsieme di funzionalità di FrameLayout. Se la tua app utilizza già un FrameLayout, puoi sostituire il layout con un CoordinatorLayout per attivare la funzionalità Snackbar completa. Se la tua app utilizza altri oggetti di layout, aggrega gli elementi di layout esistenti in un CoordinatorLayout, come mostrato nell'esempio seguente:

<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>

Imposta un tag android:id per CoordinatorLayout. Hai bisogno dell'ID del layout quando visualizzi il messaggio.

Figura 1. CoordinatorLayout sposta FloatingActionButton verso l'alto quando viene visualizzato Snackbar.

Mostra un messaggio

Per visualizzare un messaggio sono previsti due passaggi. Per prima cosa, crei un oggetto Snackbar con il testo del messaggio. Quindi, chiami il metodo show() di quell'oggetto per mostrare il messaggio all'utente.

Crea un oggetto Snackbar

Crea un oggetto Snackbar chiamando il metodo Snackbar.make() statico. Quando crei l'Snackbar, specifica il messaggio che verrà visualizzato e per quanto tempo il messaggio verrà visualizzato:

Kotlin

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

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
visualizzazione
La vista a cui collegare il Snackbar. Il metodo ricerca la gerarchia delle visualizzazioni dalla vista passata fino a quando non raggiunge un CoordinatorLayout o la visualizzazione dei contenuti dell'arredamento della finestra. In genere, è più semplice trasmettere l'istruzione CoordinatorLayout che include i tuoi contenuti.
IDstringa
L'ID risorsa del messaggio che vuoi visualizzare. Può essere testo formattato o non formattato.
media
Il periodo di tempo in cui mostrare il messaggio. Può essere LENGTH_SHORT o LENGTH_LONG.

Mostra il messaggio all'utente

Dopo aver creato Snackbar, chiama il relativo metodo show() per mostrare Snackbar all'utente:

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

Il sistema non mostra più oggetti Snackbar contemporaneamente, quindi se la vista attualmente mostra un altro Snackbar, il sistema mette in coda il tuo Snackbar e lo visualizza dopo che l'elemento Snackbar corrente scade o viene ignorato.

Se vuoi mostrare un messaggio all'utente e non devi chiamare nessuno dei metodi di utilità dell'oggetto Snackbar, non è necessario mantenere il riferimento a Snackbar dopo aver chiamato show(). Per questo motivo, è comune utilizzare il concatenamento dei metodi per creare e visualizzare un Snackbar in un'istruzione:

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();