Vous pouvez utiliser un Snackbar
pour afficher un bref message à l'utilisateur. Contrairement aux notifications, le message disparaît automatiquement au bout d'un court laps de temps. Un Snackbar
est idéal pour les messages brefs sur lesquels l'utilisateur n'a pas besoin d'agir. Par exemple, une application de messagerie peut utiliser un Snackbar
pour indiquer à l'utilisateur que l'application a bien envoyé un e-mail.
Utiliser un CoordinatorLayout
Un Snackbar
est associé à une vue. Snackbar
fournit des fonctionnalités de base s'il est associé à un objet dérivé de la classe View
, comme l'un des objets de mise en page courants. Toutefois, si Snackbar
est associé à CoordinatorLayout
, Snackbar
bénéficie de fonctionnalités supplémentaires:
- L'utilisateur peut ignorer l'
Snackbar
en balayant l'écran. - La mise en page déplace les autres éléments d'interface utilisateur lorsque
Snackbar
s'affiche. Par exemple, si la mise en page comporte unFloatingActionButton
, elle déplace le bouton vers le haut lorsqu'elle affiche unSnackbar
, au lieu de dessiner leSnackbar
au-dessus du bouton. Vous pouvez voir à quoi cela ressemble dans la figure 1.
La classe CoordinatorLayout
fournit un sur-ensemble des fonctionnalités de FrameLayout
.
Si votre application utilise déjà un FrameLayout
, vous pouvez remplacer cette mise en page par un CoordinatorLayout
pour activer toutes les fonctionnalités Snackbar
. Si votre application utilise d'autres objets de mise en page, encapsulez vos éléments de mise en page existants dans un CoordinatorLayout
, comme illustré dans l'exemple suivant:
<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>
Définissez une balise android:id
pour votre CoordinatorLayout
.
Vous avez besoin de l'ID de la mise en page lorsque vous affichez le message.
Figure 1 : Le CoordinatorLayout
déplace le FloatingActionButton
vers le haut lorsque le Snackbar
apparaît.
Afficher un message
L'affichage d'un message se fait en deux étapes. Commencez par créer un objet Snackbar
avec le texte du message. Vous appelez ensuite la méthode show()
de cet objet pour afficher le message à l'utilisateur.
Créer un objet Snackbar
Créez un objet Snackbar
en appelant la méthode statique Snackbar.make()
. Lorsque vous créez Snackbar
, spécifiez le message qu'il affiche et la durée pendant laquelle il doit s'afficher:
Kotlin
val mySnackbar = Snackbar.make(view, stringId, duration)
Java
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- vue
-
Vue à laquelle joindre le
Snackbar
. La méthode recherche dans la hiérarchie des vues à partir de la vue transmise jusqu'à atteindre un élémentCoordinatorLayout
ou la vue de contenu de la décoration de la fenêtre. En règle générale, il est plus simple de transmettre leCoordinatorLayout
qui entoure votre contenu. - stringId
- ID de ressource du message que vous souhaitez afficher. Il peut s'agir de texte formaté ou non.
- de visionnage
-
Temps d'affichage du message. Peut être défini sur
LENGTH_SHORT
ouLENGTH_LONG
.
Afficher le message pour l'utilisateur
Après avoir créé le Snackbar
, appelez sa méthode show()
pour l'afficher à l'utilisateur :Snackbar
Kotlin
mySnackbar.show()
Java
mySnackbar.show();
Le système n'affiche pas plusieurs objets Snackbar
en même temps. Par conséquent, si la vue affiche actuellement un autre Snackbar
, le système met votre Snackbar
en file d'attente et l'affiche une fois que l'Snackbar
actuelle expire ou est ignorée.
Si vous souhaitez afficher un message à l'utilisateur et que vous n'avez pas besoin d'appeler l'une des méthodes utilitaires de l'objet Snackbar
, vous n'avez pas besoin de conserver la référence à Snackbar
après avoir appelé show()
. Pour cette raison, il est courant d'utiliser le chaînage de méthodes pour créer et afficher un Snackbar
en une seule instruction:
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();