Creare e visualizzare un messaggio popup

Prova la funzionalità Scrivi
Jetpack Compose è il toolkit per l'interfaccia utente consigliato per Android. Scopri come aggiungere notifiche in Scrivi.

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

Utilizzare CoordinatorLayout

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

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

La classe CoordinatorLayout fornisce un superinsieme della funzionalità di FrameLayout. Se la tua app utilizza già un FrameLayout, puoi sostituire questo layout con un CoordinatorLayout per attivare 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. L'ID del layout è necessario quando viene visualizzato il messaggio.

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

Mostra un messaggio

Per visualizzare un messaggio sono necessari due passaggi. Innanzitutto, crea un oggetto Snackbar con il testo del messaggio. Quindi, chiami 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 il messaggio Snackbar, specifica il messaggio da visualizzare e la durata della visualizzazione:

Kotlin

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

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
visualizza
La visualizzazione a cui collegare Snackbar. Il metodo esegue una ricerca nella gerarchia delle visualizzazioni 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 con formattazione o senza formattazione.
media
La durata del messaggio. Può essere LENGTH_SHORT oppure LENGTH_LONG.

Mostra il messaggio all'utente

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

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

Il sistema non mostra più oggetti Snackbar contemporaneamente, quindi se al momento la visualizzazione mostra un altro Snackbar, il sistema mette in coda il tuo Snackbar e lo mostra dopo la scadenza o la chiusura dell'Snackbar corrente.

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