Puoi utilizzare uno Snackbar per mostrare un breve messaggio all'utente. A differenza delle
notifiche, il
messaggio scompare automaticamente dopo un breve periodo di tempo. Uno Snackbar è ideale per i messaggi brevi su cui l'utente non deve intervenire. Ad esempio, un'app di posta elettronica può utilizzare uno Snackbar per comunicare all'utente che l'app ha inviato correttamente un'email.
Utilizzare un CoordinatorLayout
Uno Snackbar è collegato a una visualizzazione. Lo 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 lo Snackbar è collegato a un CoordinatorLayout, acquisisce funzionalità aggiuntive:Snackbar
- L'utente può chiudere lo
Snackbarscorrendolo. - Il layout sposta altri elementi dell'UI quando viene visualizzato lo
Snackbar. Ad esempio, se il layout ha unFloatingActionButton, il layout sposta il pulsante verso l'alto quando mostra unSnackbar, anziché disegnare ilSnackbarsopra il pulsante. Puoi vedere come appare nella Figura 1.
La classe CoordinatorLayout fornisce un superset delle funzionalità di FrameLayout.
Se la tua app utilizza già un FrameLayout, puoi sostituire il 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 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.
Avrai bisogno dell'ID del layout quando visualizzi il messaggio.
Figura 1. Il CoordinatorLayout sposta il
FloatingActionButton verso l'alto quando viene visualizzato lo Snackbar.
Visualizzare un messaggio
Per visualizzare un messaggio, devi seguire due passaggi. Innanzitutto, crea un oggetto Snackbar con il testo del messaggio. Poi, chiama 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 lo Snackbar, specifica il messaggio che visualizza e la durata della visualizzazione:
Kotlin
val mySnackbar = Snackbar.make(view, stringId, duration)
Java
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- view
-
La visualizzazione a cui collegare lo
Snackbar. Il metodo cerca nella gerarchia di oggetti View dalla visualizzazione passata fino a raggiungere unCoordinatorLayouto la visualizzazione dei contenuti della decorazione della finestra. In genere, è più semplice passare ilCoordinatorLayoutche racchiude i contenuti. - stringId
- L'ID risorsa del messaggio che vuoi visualizzare. Può essere testo formattato o non formattato.
- duration
-
La durata della visualizzazione del messaggio. Può essere
LENGTH_SHORToLENGTH_LONG.
Mostrare il messaggio all'utente
Dopo aver creato lo Snackbar, chiama il metodo show() per mostrarlo all'utente:Snackbar
Kotlin
mySnackbar.show()
Java
mySnackbar.show();
Il sistema non mostra più oggetti Snackbar contemporaneamente, quindi se la visualizzazione sta attualmente mostrando un altro Snackbar, il sistema mette in coda il tuo Snackbar e lo visualizza dopo che quello attuale scade o viene chiuso.Snackbar
Se vuoi mostrare un messaggio all'utente e non devi chiamare nessuno dei metodi di utilità dell'oggetto Snackbar, non devi conservare il riferimento allo Snackbar dopo aver chiamato show(). Per questo motivo, è comune utilizzare l'incatenamento dei metodi per creare e mostrare uno 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();