Creare e visualizzare un messaggio popup

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

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

Utilizzare un CoordinatorLayout

Uno Snackbar è collegato a una visualizzazione. Lo Snackbar fornisce funzionalità di base se è collegato a un oggetto derivato dalla classe View, ad esempio uno qualsiasi degli oggetti di layout comuni. Tuttavia, se lo Snackbar è collegato a un CoordinatorLayout, acquisisce funzionalità aggiuntive:Snackbar

  • L'utente può chiudere lo Snackbar scorrendolo.
  • Il layout sposta altri elementi dell'UI quando viene visualizzato lo Snackbar. Ad esempio, se il layout ha un FloatingActionButton, il layout sposta il pulsante verso l'alto quando mostra un Snackbar, anziché disegnare il Snackbar sopra il pulsante. Puoi vedere come appare nella Figura 1.

La classe CoordinatorLayout fornisce un superset delle funzionalità di FrameLayout. Se la tua app utilizza già un FrameLayout, puoi sostituire il layout con un CoordinatorLayout per abilitare la funzionalità completa di Snackbar. Se la tua app utilizza altri oggetti di layout, racchiudi 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 il tuo CoordinatorLayout. Avrai bisogno dell'ID del layout quando visualizzi il messaggio.

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

Visualizzare un messaggio

Per visualizzare un messaggio, devi seguire due passaggi. Innanzitutto, crea un oggetto Snackbar con il testo del messaggio. Poi, chiama il metodo show() dell'oggetto per mostrare il messaggio all'utente.

Creare un oggetto Snackbar

Crea un oggetto Snackbar chiamando il metodo statico Snackbar.make(). Quando crei lo Snackbar, specifica il messaggio che visualizza e la durata della visualizzazione:

Kotlin

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

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
view
La visualizzazione a cui collegare lo Snackbar. Il metodo cerca nella gerarchia di oggetti View dalla visualizzazione passata fino a raggiungere un CoordinatorLayout o la visualizzazione dei contenuti della decorazione della finestra. In genere, è più semplice passare il CoordinatorLayout che racchiude i contenuti.
stringId
L'ID risorsa del messaggio che vuoi visualizzare. Può essere testo formattato o non formattato.
duration
La durata della visualizzazione del messaggio. Può essere LENGTH_SHORT o LENGTH_LONG.

Mostrare il messaggio all'utente

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

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

Il sistema non mostra più oggetti Snackbar contemporaneamente, quindi se la visualizzazione sta attualmente mostrando un altro Snackbar, il sistema mette in coda il tuo Snackbar e lo visualizza dopo che quello attuale scade o viene chiuso.Snackbar

Se vuoi mostrare un messaggio all'utente e non devi chiamare nessuno dei metodi di utilità dell'oggetto Snackbar, non devi conservare il riferimento allo Snackbar dopo aver chiamato show(). Per questo motivo, è comune utilizzare l'incatenamento dei metodi per creare e mostrare uno 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();