Los mensajes que vamos a crear se denominan Toast y vamos a ver mensajes Toast de cuatro tipos:
Mensaje de sólo texto | Mensaje con icono |
Mensaje con icono y texto | Mensaje con icono y texto con XML |
Veamos cómo se crearía cada uno de ellos. Cabe destacar que este código debe ejecutarse dentro del código de una clase Activity.
Mensaje de sólo texto
Toast toast = Toast.makeText(getApplicationContext(), "Mensaje Toast con sólo texto", Toast.LENGTH_SHORT); toast.show();
Mensaje con icono
Toast toast = new Toast(getApplicationContext()); ImageView view = new ImageView(getApplicationContext()); view.setImageResource(android.R.drawable.ic_menu_info_details); toast.setView(view); toast.setDuration(Toast.LENGTH_SHORT); toast.show();
Mensaje con icono y texto
Toast toast = Toast.makeText(getApplicationContext(), "Mensaje Toast con texto e icono", Toast.LENGTH_SHORT); View textView = toast.getView(); LinearLayout lay = new LinearLayout(getApplicationContext()); lay.setOrientation(LinearLayout.HORIZONTAL); ImageView view = new ImageView(getApplicationContext()); view.setImageResource(android.R.drawable.ic_menu_info_details); lay.addView(view); lay.addView(textView); toast.setView(lay); toast.show();
Mensaje con icono y texto con XML
LayoutInflater inflater = getLayoutInflater(); View layoutView = inflater.inflate(layout, null); Toast toast = new Toast(getApplicationContext()); toast.setDuration(Toast.LENGTH_SHORT); toast.setView(layoutView); toast.show();
El código XML del Toast sería:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@layout/border" android:gravity="center"> <ImageView android:src="@android:drawable/ic_menu_info_details" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginRight="10dp"/> <TextView android:text="@string/text_icon_msg" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#FFFFFF" android:gravity="center_vertical"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#444444"/> <stroke android:width="4dp" android:color="#999999" /> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" android:topLeftRadius="7dp" android:topRightRadius="7dp"/> </shape>
Ahora veamos el código de la clase activity al completo:
package org.ffbeltran; import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; public class EjemploToast extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button; button = (Button) findViewById(R.id.text_only_button); button.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { textOnlyToast(getString(R.string.text_only_msg), Toast.LENGTH_SHORT); } }); button = (Button) findViewById(R.id.icon_only_button); button.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { iconOnlyToast(android.R.drawable.ic_menu_info_details, Toast.LENGTH_SHORT); } }); button = (Button) findViewById(R.id.text_icon_button); button.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { textIconToast(R.layout.text_icon_toast, Toast.LENGTH_LONG); // textIconToast(getString(R.string.text_icon_msg), // android.R.drawable.ic_menu_info_details, Toast.LENGTH_SHORT); } }); } private void textOnlyToast(String message, int duration) { Toast toast = Toast.makeText(getApplicationContext(), message, duration); toast.show(); } private void iconOnlyToast(int icon, int duration) { Toast toast = new Toast(getApplicationContext()); ImageView view = new ImageView(getApplicationContext()); view.setImageResource(icon); toast.setView(view); toast.setDuration(duration); toast.show(); } private void textIconToast(String message, int icon, int duration) { Toast toast = Toast.makeText(getApplicationContext(), message, duration); View textView = toast.getView(); LinearLayout lay = new LinearLayout(getApplicationContext()); lay.setOrientation(LinearLayout.HORIZONTAL); ImageView view = new ImageView(getApplicationContext()); view.setImageResource(icon); lay.addView(view); lay.addView(textView); toast.setView(lay); toast.show(); } private void textIconToast(int layout, int duration) { LayoutInflater inflater = getLayoutInflater(); View layoutView = inflater.inflate(layout, null); Toast toast = new Toast(getApplicationContext()); toast.setDuration(duration); toast.setView(layoutView); toast.show(); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal"> <TextView android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/app_name" android:textSize="25sp" android:textStyle="bold" android:layout_marginTop="25dip" android:layout_marginBottom="25dip"/> <Button android:id="@id/text_only_button" android:layout_gravity="center" android:layout_width="200dip" android:layout_height="wrap_content" android:text="@string/text_only_button"/> <Button android:id="@id/icon_only_button" android:layout_gravity="center" android:layout_width="200dip" android:layout_height="wrap_content" android:text="@string/icon_only_button"/> <Button android:id="@id/text_icon_button" android:layout_gravity="center" android:layout_width="200dip" android:layout_height="wrap_content" android:text="@string/text_icon_button"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">EjemploToast</string> <string name="text_only_button">Sólo texto</string> <string name="icon_only_button">Sólo icono</string> <string name="text_icon_button">Texto e icono</string> <string name="text_only_msg">Mensaje Toast con sólo texto</string> <string name="text_icon_msg">Mensaje Toast con texto e icono</string> </resources>