Notificaciones Toast
Las Notificaciones Toast son un tipo de notificación que se superpone a cualquier ventana, que no puede ser cancelado y que no permite interactuar con él. Principalmente se ubican en la parte inferior – central de la pantalla, aunque podemos definirle una ubicación concreta mediante el metodo setGravity(). Los únicos controles que podemos añadirle son ImageView y TextView si los contenemos mediante un layout personalizado.
Definiendo un Toast
Un Toast necesita 3 valores mínimos para mostrarse, estos son:
- Contexto de aplicación – Context
- Texto a mostrar – String
- Duración del Toast – int
- LENGHT_LONG : 1
- LENGHT_SHORT : 2
Podemos instanciarlo directamente pasándole el método makeText() para formarlo. Para mostrarlo basta con llamar al método show().
Toast.makeText(getApplicationContext(), "Toast basico", Toast.LENGTH_LONG).show();
Como posicionar las notificaciones toast
Por comodidad estas notificaciones aparecen centradas en la parte inferior de la pantalla, pero podemos modificarlo definiendo el método setGravity(int Gravity, int XOffset, int YOffset).
- Gravity
- START, END, CENTER, BOTTOM, TOP, RIGHT, LEFT…
Toast _mToast = Toast.makeText(getApplicationContext(), "Toast basico centrado", Toast.LENGTH_LONG); _mToast.setGravity(Gravity.CENTER | Gravity.RIGHT , 0, 0); _mToast.show();
Notificaciones Toast con Layout personalizado
Otra opción que tenemos, es crear un archivo xml donde definiremos las propiedades del Toast. De esta manera podremos incluir un fondo propio y añadir un icono. Veamos un ejemplo :
- Creamos un nuevo archivo XML en la carpeta ‘Res > Layout’ que utilizaremos para darle forma a nuestro Toast, en este caso incluiremos un ImageView donde se mostrara el icono de la aplicación, seguido de un TextView.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/Linearlayout_toast" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:padding="10dp" android:background="#C0C0C0" android:gravity="center" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/toast_textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:textColor="#FFFFFF" /> </LinearLayout>
Una vez definido el XML ya solo queda enlazar el archivo mediante el uso de LayoutInflater. Este nos permitirá instanciar el layout que acabamos de crear mediante el método inflate(int, ViewGroup), donde el primer parámetro hace referencia al nuevo archivo creado [R.layout.layout_toast], y el segundo, ViewGroup, será el componente contenedor. [R.id.Linearlayout_toast].
//Instanciamos un nuevo Toast Toast _mToast = new Toast(getApplicationContext()); //Definimos la ubicación del Toast _mToast.setGravity(Gravity.CENTER | Gravity.RIGHT , 0, 0); //Instanciamos un LayoutInflater donde definimos el archivo XML a utilizar (R.layout.layout_toast) e // indicamos el el objeto [LinearLayout] contenedor (R.id.Linearlayout_toast) LayoutInflater inflater = getLayoutInflater(); View custom_toast = inflater.inflate(R.layout.layout_toast, (ViewGroup) findViewById(R.id.Linearlayout_toast)); //Instanciamos un nuevo TextView y lo asociamos al del layout TextView textToast = (TextView) custom_toast.findViewById(R.id.toast_textView); //Aqui definimos el texto que se mostrará en el Toast textToast.setText("Toast con Layout personalizado!"); //Añadimos la vista al Toast y lo mostramos _mToast.setView(custom_toast); _mToast.show();