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 unFloatingActionButton
, il layout sposta il pulsante verso l'alto quando mostra unSnackbar
, invece di disegnare ilSnackbar
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.
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 unCoordinatorLayout
o la visualizzazione dei contenuti dell'arredamento della finestra. In genere, è più semplice trasmettere l'istruzioneCoordinatorLayout
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
oLENGTH_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();