Un aviso proporciona información simple sobre una acción en una pequeña ventana emergente. Solo ocupa la cantidad de espacio necesario para el mensaje, y la actividad en curso permanece visible y admite la interacción. Los avisos desaparecen automáticamente después de un tiempo de espera.
Por ejemplo, si se hace clic en la opción Enviar de un correo electrónico, se activará el aviso "Enviando mensaje…", como se muestra en la siguiente captura de pantalla:

No se puede hacer clic en los avisos. Si se requiere la respuesta del usuario a un mensaje de estado, probablemente sea mejor usar una notificación.
Conceptos básicos
Primero, crea una instancia de un objeto Toast
con uno de los métodos makeText()
.
Este método usa tres parámetros: el Context
de la aplicación, el mensaje de texto y la duración del aviso. Muestra un objeto de aviso correctamente inicializado. Puedes mostrar la notificación del aviso con show()
, tal como se muestra en el siguiente ejemplo:
Kotlin
val text = "Hello toast!" val duration = Toast.LENGTH_SHORT val toast = Toast.makeText(applicationContext, text, duration) toast.show()
Java
Context context = getApplicationContext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show();
Este ejemplo muestra todos los elementos necesarios para la mayoría de los avisos. En general, no se necesita nada más. Sin embargo, tal vez quieras colocar el aviso en otro lugar o incluso usar tu propio diseño en lugar de un mensaje de texto simple. En las siguientes secciones se describe cómo hacer estas adaptaciones.
También puedes encadenar métodos para evitar la dependencia del objeto de aviso, de la siguiente forma:
Kotlin
Toast.makeText(context, text, duration).show()
Java
Toast.makeText(context, text, duration).show();
Ubicación del aviso
Una notificación de aviso estándar aparece cerca de la parte inferior de la pantalla, centrada horizontalmente.
Puedes cambiar esta posición con el método setGravity(int, int, int)
. Se aceptan tres parámetros: una constante de Gravity
, un desplazamiento de la posición X y un desplazamiento de la posición Y.
Por ejemplo, si decides que el aviso debe aparecer en la esquina superior izquierda, puedes establecer la constante de gravedad de esta manera:
Kotlin
toast.setGravity(Gravity.TOP or Gravity.LEFT, 0, 0)
Java
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
Si deseas desplazar el aviso hacia la derecha, aumenta el valor del segundo parámetro. Para desplazarlo hacia abajo, aumenta el valor del último parámetro.
Cómo crear una vista de aviso personalizada
Si un mensaje de texto simple no es suficiente, puedes crear un diseño personalizado para el aviso. Primero, define un diseño de View, en XML o en el código de la aplicación. Luego, pasa el objeto View
raíz al método setView(View)
.
El siguiente fragmento contiene un diseño personalizado de una notificación de aviso (guardado como layout/custom_toast.xml
):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/custom_toast_container" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="8dp" android:background="#DAAA" > <ImageView android:src="@drawable/droid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="8dp" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFF" /> </LinearLayout>
Observa que el ID del elemento LinearLayout es "custom_toast_container". Debes usar este ID y el del archivo de diseño XML "custom_toast" para modificar el diseño, como se muestra aquí:
Kotlin
val inflater = layoutInflater val container: ViewGroup = findViewById(R.id.custom_toast_container) val layout: ViewGroup = inflater.inflate(R.layout.custom_toast, container) val text: TextView = layout.findViewById(R.id.text) text.text = "This is a custom toast" with (Toast(applicationContext)) { setGravity(Gravity.CENTER_VERTICAL, 0, 0) duration = Toast.LENGTH_LONG view = layout show() }
Java
LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.custom_toast_container)); TextView text = (TextView) layout.findViewById(R.id.text); text.setText("This is a custom toast"); Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show();
Primero, recupera el objeto LayoutInflater
con getLayoutInflater()
(o getSystemService()
) y, luego, aumenta el diseño desde XML usando inflate(int, ViewGroup)
. El primer parámetro es el ID del recurso de diseño, y el segundo es el elemento View raíz. Este diseño aumentado permite encontrar más objetos View en el diseño, así que ahora puedes capturar y definir el contenido de los elementos ImageView y TextView. Por último, crea un nuevo Toast con Toast(Context)
y define algunas de sus propiedades, como la gravedad y la duración. A continuación, llama a setView(View)
y pásale el diseño aumentado.
Ahora puedes mostrar el aviso con tu diseño personalizado si llamas a show()
.
Nota: No uses el constructor público para un Toast, a menos que vayas a definir el diseño con setView(View)
.
Si no tienes un diseño personalizado para usar, créalo con makeText(Context, int, int)
.