Está en la página 1de 10

La clase Toast nos permite mostrar un mensaje superpuesto a la ventana por un perodo de

tiempo pero sin congelar la aplicacin. Este mensaje no permite interactuar con el usuario
(no se pueden ingresar datos, seleccionar botones ni obligar a que se cierre)
Eventualmente se lo puede localizar en distintas partes del dispositivo.

Problema:
Confeccionar una aplicacin que muestre una serie de botones y active mensajes de
notificaciones con la clase Toast.
Primero creamos un proyecto llamado: proyecto033
Lo almacenamos en el paquete: androidya.proyecto033
La interfaz visual a implementar son tres botones:

No olvidemos inicializar la propiedad On Click de cada botn con los mtodos: prueba1,
prueba2 y prueba3.
El cdigo fuente de la aplicacin queda como sigue:
package androidya.proyecto033;
import
import
import
import
import
import

android.app.Activity;
android.os.Bundle;
android.view.Gravity;
android.view.LayoutInflater;
android.view.View;
android.widget.Toast;

public class Proyecto033Activity extends Activity {


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void prueba1(View v) {
Toast toast = Toast.makeText(this, "Mensaje 1",
Toast.LENGTH_SHORT);
toast.show();
}
public void prueba2(View v) {
Toast toast = Toast.makeText(this, "Mensaje 2",
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
}

public void prueba3(View v) {


LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast1,
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}

null);

Para el evento click del primer botn mostramos el mensaje con las estructura ms simple
que nos provee la clase Toast. Definimos un objeto de la clase Toast y llamamos al mtodo
makeText pasando como parmetro la referencia del Activity, el mensaje a mostrar y una
constante indicando si queremos que el mensaje aparezca por un perodo corto o largo de
tiempo en la pantalla. Por ltimo llamamos al mtodo show para que se muestre el mensaje:
public void prueba1(View v) {

Toast toast = Toast.makeText(this, "Mensaje 1",


Toast.LENGTH_SHORT);
toast.show();
}

Si queremos ubicar en otra parte de la pantalla debemos llamar al mtodo setGravity e


indicar en el primer parmetro una constante (en este ejemplo lo centramos verticalmente)

En el segundo y tercer parmetro de setGravity podemos desplazarlo una cantidad de


pxeles hacia derecha o izquierda, arriba o abajo segn indiquemos valores positivos o
negativos.
Luego el mtodo completo para este segundo Toast es:
public void prueba2(View v) {
Toast toast = Toast.makeText(this, "Mensaje 2",
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
}

Para generar un Toast customizado debemos crear un archivo XML donde creamos
visualmente los controles a mostrar, en este ejemplo creamos el siguiente archivo (crear un
archivo llamado toast1.xml):

Este recurso luego lo incorporamos en el Toast mediante el siguiente cdigo:

public void prueba3(View v) {


LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast1,null);
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}

Mediante la clase LayoutInflate procedemos a leer el contenido del archivo XML creado
anteriormente y lo enlazamos con el toast mediante el mtodo:
toast.setView(layout);

En pantalla luego el Toast customizado aparece de la siguiente forma:

Este proyecto lo puede descargar en un zip desde este enlace: proyecto033.zip

Context context = getApplicationContext();


CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();

custom_dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toast_layout_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#C8C8C8"
android:gravity="center"
android:orientation="horizontal"
android:padding="10dp" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:src="@android:drawable/ic_dialog_info" />
<TextView
android:id="@+id/text_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFF" />
</LinearLayout>
Es importante resaltar que se le debe dar un ID al elemento raz del layout, ya que ser necesario
como veremos a continuacin:
MainActivity.java
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.toast_layout_root));
TextView textToast = (TextView) layout.findViewById(R.id.text_toast);
textToast.setText(text);
Toast toast = new Toast(context);
toast.setDuration(duration);

toast.setView(layout);
toast.show();