Créer et afficher un message pop-up

Essayer Compose
Jetpack Compose est le kit d'outils d'interface utilisateur recommandé pour Android. Découvrez comment ajouter des notifications dans Compose.

Vous pouvez utiliser un Snackbar pour afficher un bref message auprès de l'utilisateur. Contrairement aux notifications, le message disparaît automatiquement après une courte période. Un Snackbar est idéal pour les messages courts sur lesquels l'utilisateur n'a pas besoin d'agir. Par exemple, une application de messagerie peut utiliser un Snackbar pour indiquer à l'utilisateur qu'elle a bien envoyé un e-mail.

Utiliser 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 le Snackbar est associé à un CoordinatorLayout, le Snackbar offre des caractéristiques supplémentaires:

  • L'utilisateur peut ignorer l'élément Snackbar en le balayant.
  • La mise en page déplace les autres éléments d'interface utilisateur lorsque Snackbar apparaît. Par exemple, si la mise en page comporte un élément FloatingActionButton, elle déplace le bouton vers le haut lorsqu'elle affiche un élément Snackbar, au lieu de dessiner l'élément Snackbar au-dessus du bouton. La figure 1 montre à quoi cela ressemble.

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 la fonctionnalité Snackbar complète. Si votre application utilise d'autres objets de mise en page, encapsulez les é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 mise en page lorsque vous affichez le message.

Figure 1 : CoordinatorLayout déplace FloatingActionButton vers le haut lorsque 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 auprès de l'utilisateur.

Créer un objet Snackbar

Créez un objet Snackbar en appelant la méthode statique Snackbar.make(). Lorsque vous créez la Snackbar, spécifiez le message à afficher et sa durée d'affichage:

Kotlin

val mySnackbar = Snackbar.make(view, stringId, duration)

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
vue
Vue à laquelle associer le Snackbar. La méthode recherche le haut de la hiérarchie des vues à partir de la vue transmise jusqu'à ce qu'elle atteigne un élément CoordinatorLayout ou la vue de contenu du décor de fenêtre. Généralement, il est plus simple de transmettre le CoordinatorLayout englobant votre contenu.
IDchaîne
ID de ressource du message que vous souhaitez afficher. Il peut s'agir de texte mis en forme ou non.
de visionnage
Durée d'affichage du message. Il peut s'agir de LENGTH_SHORT ou LENGTH_LONG.

Montrez le message à l'utilisateur.

Après avoir créé le Snackbar, appelez sa méthode show() pour afficher l'Snackbar à l'utilisateur:

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 une autre Snackbar, le système met votre Snackbar en file d'attente et l'affiche une fois que l'Snackbar actuel a expiré ou est ignorée.

Si vous souhaitez afficher un message à l'utilisateur et que vous n'avez pas besoin d'appeler les 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 un chaînage de méthodes pour créer et afficher un Snackbar dans 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();