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 unFloatingActionButton
, il pulsante viene spostato verso l'alto quando viene visualizzato unSnackbar
, anziché disegnare ilSnackbar
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 unCoordinatorLayout
o la visualizzazione dei contenuti della decorazione della finestra. In genere, è più semplice passare ilCoordinatorLayout
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
oppureLENGTH_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();