Para ello voy a poner los distintos pasos a seguir para poder llegar a esto:
Para poder llegar a esto necesitamos hacer lo siguiente:
1- Crear un xml en res/layout, yo lo he creado con el nombre toast_layout.xml, con el siguiente código:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toast_layout_root" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:layout_marginLeft="20px" android:layout_marginRight="20px" android:background="@drawable/borde" android:fitsSystemWindows="true" android:orientation="horizontal" android:padding="10dp" android:gravity="center"> <ImageView android:id="@+id/toastImagen" android:layout_width="58dp" android:layout_height="99dp" android:layout_marginRight="10dp" android:layout_marginLeft="10dp" android:src="@drawable/icon" /> <TextView android:id="@+id/toastText" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#FFF" android:text="esto es uyna prueba" android:gravity="center"/> </LinearLayout>
En mi ejemplo, al utilizar una imagen, la cual es res/drawable/icon.png, y ser esa imagen mayor que el tamaño que quiero utilizar he preferido darle un tamaño de forma manual, como se ve en las lineas 15 y 16.
2- Asignar el borde al Toast, para ello creamos en res/drawable un xml, en mi caso borde.xml, el cual asignamos al background del linearlayout que contiene el Toast (linea 9). Tendra el siguiente código:
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="2dp" android:color="#FFFFFFFF" /> <padding android:left="3dp" android:top="3dp" android:right="3dp" android:bottom="3dp" /> <corners android:radius="2dp" /> <solid android:color="#DAAA" /> </shape>
En este código definimos el grosor de las lineas del borde (lineas 4 y 5) y el grosor de las esquinas (linea 6). Así como el color del fondo que tendrá (linea 7).
3- Lo ultimo es asignar al Toast que estemos utilizando la vista que crearemos con el linearlayout que tenemos al principio.
Para ello debemos realizar lo siguiente:
LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root)); Toast toast = new Toast(ctx); toast.setView(layout); text = (TextView) vista.findViewById(R.id.toastText); text.setText("texto a mostar"); toast.show();
En las lineas 2 y 3 obtendremos la vista (LinearLayout en nuestro caso) que se incluira en el Toast.
Cada vez que se quiera escribir en el Toast deberemos utilizar text.setText("Texto"); para modificarlo. Esto nos lleva a lo siguiente, un Toast persistente para asi poder cancelar los mensajes entre una ventana y otra. Pero eso se tratara en otro momento, que todavia estoy mirando como conseguir que el ancho de estos Toast personalizados sea menor que el ancho de los terminales.
Nos vemos.
No hay comentarios:
Publicar un comentario