Puedes usar un Snackbar para mostrarle un mensaje breve al usuario. A diferencia de las Notificaciones, el mensaje desaparece automáticamente después de un breve período. Un Snackbar es ideal para mensajes breves con los que el usuario no necesita interactuar. Por ejemplo, una app de correo electrónico puede usar un Snackbar para indicarle al usuario que la app envió correctamente un correo electrónico.
Cómo usar un objeto CoordinatorLayout
Un Snackbar se adjunta a una vista. El Snackbar proporciona funcionalidad básica si se adjunta a cualquier objeto derivado de la clase View, como cualquiera de los objetos de diseño comunes. Sin embargo, si el Snackbar está adjunto a un CoordinatorLayout, el Snackbar obtiene funciones adicionales:
- El usuario puede descartar el
Snackbardeslizando el dedo. - El diseño mueve otros elementos de la IU cuando aparece el
Snackbar. Por ejemplo, si el diseño tiene unFloatingActionButton, el diseño mueve el botón hacia arriba cuando muestra unSnackbar, en lugar de dibujar elSnackbarsobre el botón. Puedes ver cómo se ve en la Figura 1.
La clase CoordinatorLayout proporciona un superconjunto de la funcionalidad de FrameLayout.
Si tu app ya usa un FrameLayout, puedes reemplazar ese diseño por un CoordinatorLayout para habilitar la funcionalidad completa de Snackbar. Si tu app usa otros objetos de diseño, une los elementos de diseño existentes en un CoordinatorLayout, como se muestra en el siguiente ejemplo:
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myCoordinatorLayout" 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> </androidx.coordinatorlayout.widget.CoordinatorLayout>
Establece una etiqueta android:id para tu CoordinatorLayout.
Necesitas el ID del diseño cuando muestras el mensaje.
Figura 1: El CoordinatorLayout mueve el FloatingActionButton hacia arriba cuando aparece el Snackbar.
Muestra un mensaje
Hay dos pasos para mostrar un mensaje. Primero, crea un objeto Snackbar con el texto del mensaje. Luego, llamas al método show() de ese objeto para mostrar el mensaje al usuario.
Crea un objeto Snackbar
Crea un objeto Snackbar llamando al método estático Snackbar.make(). Cuando crees el Snackbar, especifica el mensaje que muestra y el tiempo que se mostrará:
val mySnackbar = Snackbar.make(view, stringId, duration)
- ver
-
La vista a la que se adjuntará el
Snackbar. El método busca en la jerarquía de vistas desde la vista pasada hasta que llega a unCoordinatorLayouto a la vista de contenido de la decoración de la ventana. Por lo general, es más sencillo pasar elCoordinatorLayoutque encierra tu contenido. - stringId
- ID del recurso del mensaje que deseas mostrar. Puede ser texto con formato o sin formato.
- duración
-
Es el período durante el que se mostrará el mensaje. Puede ser
LENGTH_SHORToLENGTH_LONG.
Mostrar el mensaje al usuario
Después de crear el Snackbar, llama a su método show() para mostrar el Snackbar al usuario:
mySnackbar.show()
El sistema no muestra varios objetos Snackbar al mismo tiempo, por lo que, si la vista muestra otro Snackbar, el sistema pone en cola tu Snackbar y lo muestra después de que venza o se descarte el Snackbar actual.
Si quieres mostrar un mensaje al usuario y no necesitas llamar a ninguno de los métodos de utilidad del objeto Snackbar, no es necesario que conserves la referencia a Snackbar después de llamar a show(). Por este motivo, es común usar el encadenamiento de métodos para crear y mostrar un Snackbar en una sola instrucción:
Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT ).show()