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 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 correttamente un'email.
Utilizzare un CoordinatorLayout
Un Snackbar è collegato a una visualizzazione. 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 il Snackbar è
collegato a un
CoordinatorLayout,
il Snackbar acquisisce funzionalità aggiuntive:
- L'utente può chiudere
Snackbarscorrendo. - Il layout sposta altri elementi UI quando viene visualizzato
Snackbar. Ad esempio, se il layout ha unFloatingActionButton, il layout sposta il pulsante verso l'alto quando mostra unSnackbar, invece di disegnare ilSnackbarsopra il pulsante. Puoi vedere l'aspetto nella Figura 1.
La classe CoordinatorLayout fornisce un superset delle funzionalità di FrameLayout.
Se la tua app utilizza già un FrameLayout, puoi sostituire questo 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 nel seguente esempio:
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myCoordinatorLayout" 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> </androidx.coordinatorlayout.widget.CoordinatorLayout>
Imposta un tag android:id per il tuo CoordinatorLayout.
Hai bisogno dell'ID del layout quando visualizzi il messaggio.
Figura 1. Il CoordinatorLayout sposta il
FloatingActionButton verso l'alto quando viene visualizzato il Snackbar.
Visualizzare un messaggio
Per visualizzare un messaggio sono necessari due passaggi. Per prima cosa, crea un oggetto
Snackbar con il testo del messaggio. Quindi, chiama il metodo
show()
dell'oggetto per mostrare il messaggio all'utente.
Crea un oggetto Snackbar
Crea un oggetto Snackbar chiamando il metodo statico
Snackbar.make(). Quando crei Snackbar, specifica il messaggio che
visualizza e la durata di visualizzazione del messaggio:
val mySnackbar = Snackbar.make(view, stringId, duration)
- visualizza
-
La visualizzazione a cui allegare il
Snackbar. Il metodo esegue la ricerca nella gerarchia di oggetti View dalla visualizzazione passata fino a raggiungere unCoordinatorLayouto la visualizzazione dei contenuti della decorazione della finestra. In genere, è più semplice superare ilCoordinatorLayoutche racchiude i tuoi contenuti. - stringId
- L'ID risorsa del messaggio che vuoi visualizzare. Può essere testo formattato o non formattato.
- durata
-
Il periodo di tempo durante il quale mostrare il messaggio. Può essere
LENGTH_SHORToLENGTH_LONG.
Mostra il messaggio all'utente
Dopo aver creato Snackbar, chiama il relativo metodo show()
per mostrare Snackbar all'utente:
mySnackbar.show()
Il sistema non mostra più oggetti Snackbar contemporaneamente, quindi se la visualizzazione mostra attualmente 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 l'incatenamento dei metodi per creare e mostrare un Snackbar in un'unica istruzione:
Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT ).show()