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 unFloatingActionButton
, il layout sposta il pulsante verso l'alto quando mostra un elementoSnackbar
, invece di disegnareSnackbar
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.
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 valoreCoordinatorLayout
o la visualizzazione dei contenuti della decorazione finestra. In genere, è più semplice trasmettere ilCoordinatorLayout
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
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,
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();