Creare e visualizzare un messaggio popup

Prova la modalità Scrivi
Jetpack Compose è il toolkit dell'interfaccia utente consigliato 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 agire. Ad esempio, un'app email può utilizzare un Snackbar per comunicare all'utente che l'app ha inviato un'email correttamente.

Utilizzo di un CoordinatorLayout

Un elemento Snackbar è collegato a una vista. L'elemento Snackbar fornisce funzionalità di base se è collegato a un oggetto derivato dalla classe View, come uno qualsiasi degli oggetti layout comuni. Tuttavia, se Snackbar è collegato a un CoordinatorLayout, Snackbar ottiene funzionalità aggiuntive:

  • L'utente può chiudere Snackbar facendolo scorrere.
  • Il layout sposta altri elementi dell'interfaccia utente quando viene visualizzato Snackbar. Ad esempio, se il layout ha un FloatingActionButton, il layout sposta il pulsante verso l'alto quando mostra un elemento Snackbar, invece di disegnare Snackbar sopra il pulsante. Puoi vederne l'aspetto nella Figura 1.

La classe CoordinatorLayout fornisce un soprainsieme delle funzionalità di FrameLayout. Se la tua app utilizza già un FrameLayout, puoi sostituire quel 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 elemento 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. Devi avere l'ID del layout quando mostri il messaggio.

Figura 1. L'elemento CoordinatorLayout sposta la FloatingActionButton verso l'alto quando viene visualizzata la Snackbar.

Visualizza un messaggio

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

Creazione di un oggetto Snackbar

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

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 cerca nella gerarchia di visualizzazione dalla visualizzazione passata fino a raggiungere un valore CoordinatorLayout o la visualizzazione dei contenuti della decorazione finestra. In genere, è più semplice trasmettere il CoordinatorLayout che include i contenuti.
ID stringa
L'ID risorsa del messaggio da visualizzare. Può essere testo formattato o non formattato.
media
Il periodo di tempo durante il quale il messaggio viene mostrato. 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, di conseguenza, se la visualizzazione al momento mostra un altro Snackbar, il sistema mette in coda Snackbar e lo visualizza dopo che l'oggetto Snackbar attuale scade o viene chiuso.

Se vuoi mostrare un messaggio all'utente e non devi chiamare alcun metodo dell'utilità dell'oggetto Snackbar, non è necessario mantenere il riferimento a Snackbar dopo aver chiamato show(). Per questo motivo, è pratica comune utilizzare il concatenamento dei metodi per creare e mostrare un elemento Snackbar in un'unica 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();