Cómo crear y mostrar un mensaje emergente

Prueba el método de Compose
Jetpack Compose es el kit de herramientas de IU recomendado para Android. Obtén información para agregar notificaciones en Compose.

Puedes usar un Snackbar a mostrar un mensaje breve al usuario. Desmarcar “Me gusta” Notificaciones, desaparece automáticamente después de un período corto. Un Snackbar es ideal para mensajes breves en los que el usuario no necesita tomar medidas. Por ejemplo, un de correo electrónico puede usar un Snackbar para indicarle al usuario que la app enviado correctamente un correo electrónico.

Cómo usar un objeto CoordinatorLayout

Un Snackbar se adjunta a una vista. El Snackbar proporciona una funcionalidad básica si se adjunta a cualquier objeto derivado del Clase View, como cualquiera de los objetos de diseño comunes. Sin embargo, si Snackbar es se adjunta a una CoordinatorLayout, Snackbar obtiene funciones adicionales:

  • El usuario puede descartar la Snackbar deslizándola hacia afuera.
  • El diseño mueve otros elementos de la IU cuando aparece Snackbar. Por ejemplo, si el diseño tiene una FloatingActionButton, el diseño mueve el botón hacia arriba cuando muestra un Snackbar, en lugar de de dibujar el Snackbar en la parte superior del botón. Puedes ver cómo esto 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. con un CoordinatorLayout para habilitar el Snackbar completo funcionalidad. Si tu app usa otros objetos de diseño, ajusta el diseño existente elementos en un CoordinatorLayout, como se muestra a continuación ejemplo:

<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>

Establece una etiqueta android:id para tu CoordinatorLayout. Necesitas el ID del diseño cuando muestras el mensaje.

Figura 1: La CoordinatorLayout mueve la FloatingActionButton hacia arriba cuando aparece Snackbar.

Muestra un mensaje

Hay dos pasos para mostrar un mensaje. Primero, creas un Snackbar con el texto del mensaje. Luego, llamas a la API de ese objeto show() 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 elemento Snackbar, especifica el mensaje que y la cantidad de tiempo para mostrar el mensaje:

Kotlin

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

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
vista
La vista a la que se adjunta el Snackbar. El método busca jerarquía de vistas desde la vista pasada hasta que alcanza un CoordinatorLayout o la vista de contenido de la decoración de la ventana Por lo general, es más fácil pasar el CoordinatorLayout. que incluyen tu contenido.
stringId
El ID de recurso del mensaje que deseas mostrar. Esto se puede formatear o texto sin formato.
de vistas
Es la cantidad de tiempo que se muestra el mensaje. Puede ser LENGTH_SHORT o LENGTH_LONG

Muestra el mensaje al usuario

Después de crear el Snackbar, llama a su show(). método para mostrar Snackbar al usuario:

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

El sistema no muestra varios objetos Snackbar al mismo tiempo. tiempo, por lo tanto, si la vista muestra actualmente otro Snackbar, el el sistema pone en cola tu Snackbar y lo muestra después del Snackbar vence o se descarta.

Si quieres mostrar un mensaje al usuario y no necesitas llamar a Snackbar, no es necesario que conserves el referencia a Snackbar después de llamar a show(). Para Por eso, es común usar el encadenamiento de métodos para crear y mostrar Snackbar en una sentencia:

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();