Android中提供一种简单的Toast消息提示框机制,可以在用户点击了某些按钮后,提示用户一些信息,提示的信息不能被用户点击,Toast的提示信息根据用户设置的显示时间后自动消失。Toast的提示信息可以在调试程序的时候方便的显示某些想显示的东西。
一、创建Toast:
用法一:
makeText(Context context, int resId, int duration)
参数:context是toast显示在哪个上下文,通常是当前Activity;resId指显示内容引用Resouce那条数据,就是从R类中去指定显示的消息内容;duration指定显示时间,Toast默认有LENGTH_SHORT和LENGTH_LONG两常量,分别表示短时间显示和长时间显示
1 Toast.makeText(getApplicationContext(), "默认Toast样式", 2 Toast.LENGTH_SHORT).show();
用法二:
makeText(Context context, CharSequence text, int duration)
参数:context和duration与第一个方法相同,参数text可以自己写消息内容。
用上面任意方法创建Toast对象之后调用方法show()即可显示。
1 Toast.makeText(getApplicationContext(), R.String.xxx, 2 Toast.LENGTH_SHORT).show();
二、设置Toast显示位置:
方法一:
setGravity(int gravity, int xOffset, int yOffset)
三个参数分别表示(起点位置,水平向右位移,垂直向下位移)
Toast toast.setGravity(Gravity.TOP | Gravity.LEFT, 0, 200);
方法二:setMargin(float horizontalMargin, float verticalMargin)
以横向和纵向的百分比设置显示位置,参数均为float类型(水平位移正右负左,竖直位移正上负下)
Toast toast.setMargin(-0.5f, 0f);
三、显示一个带图片的Toast效果:
1 toast = Toast.makeText(getApplicationContext(), 2 "带图片的Toast", Toast.LENGTH_LONG); 3 toast.setGravity(Gravity.CENTER, 0, 0); 4 //获得view对象 5 LinearLayout toastView = (LinearLayout) toast.getView(); 6 实例化一个image对象 7 ImageView imageCodeProject = new ImageView(getApplicationContext()); 8 imageCodeProject.setImageResource(R.drawable.icon); 9 //添加到view对象 10 toastView.addView(imageCodeProject, 0); 11 //显示 12 toast.show();
四、完全自定义效果:
1 LayoutInflater inflater = getLayoutInflater(); 2 View layout = inflater.inflate(R.layout.custom, 3 (ViewGroup) findViewById(R.id.llToast)); 4 ImageView image = (ImageView) layout.findViewById(R.id.tvImageToast); 5 image.setImageResource(R.drawable.icon); 6 TextView title = (TextView) layout.findViewById(R.id.tvTitleToast); 7 title.setText("Attention"); 8 TextView text = (TextView) layout.findViewById(R.id.tvTextToast); 9 text.setText("完全自定义Toast"); 10 toast = new Toast(getApplicationContext()); 11 toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40); 12 toast.setDuration(Toast.LENGTH_LONG); 13 toast.setView(layout); 14 toast.show();
五、其他线程:
1 new Thread(new Runnable() { 2 public void run() { 3 showToast(); 4 } 5 }).start();
六、完整代码:
1. main.java
1 package com.wjq.toast; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.view.Gravity; 7 import android.view.LayoutInflater; 8 import android.view.View; 9 import android.view.ViewGroup; 10 import android.view.View.OnClickListener; 11 import android.widget.ImageView; 12 import android.widget.LinearLayout; 13 import android.widget.TextView; 14 import android.widget.Toast; 15 16 public class Main extends Activity implements OnClickListener { 17 Handler handler = new Handler(); 18 19 @Override 20 public void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.main); 23 24 findViewById(R.id.btnSimpleToast).setOnClickListener(this); 25 findViewById(R.id.btnSimpleToastWithCustomPosition).setOnClickListener( 26 this); 27 findViewById(R.id.btnSimpleToastWithImage).setOnClickListener(this); 28 findViewById(R.id.btnCustomToast).setOnClickListener(this); 29 findViewById(R.id.btnRunToastFromOtherThread).setOnClickListener(this); 30 31 } 32 33 public void showToast() { 34 handler.post(new Runnable() { 35 36 @Override 37 public void run() { 38 Toast.makeText(getApplicationContext(), "我来自其他线程!", 39 Toast.LENGTH_SHORT).show(); 40 41 } 42 }); 43 } 44 45 @Override 46 public void onClick(View v) { 47 Toast toast = null; 48 switch (v.getId()) { 49 case R.id.btnSimpleToast: 50 Toast.makeText(getApplicationContext(), "默认Toast样式", 51 Toast.LENGTH_SHORT).show(); 52 break; 53 case R.id.btnSimpleToastWithCustomPosition: 54 toast = Toast.makeText(getApplicationContext(), 55 "自定义位置Toast", Toast.LENGTH_LONG); 56 toast.setGravity(Gravity.CENTER, 0, 0); 57 toast.show(); 58 break; 59 case R.id.btnSimpleToastWithImage: 60 toast = Toast.makeText(getApplicationContext(), 61 "带图片的Toast", Toast.LENGTH_LONG); 62 toast.setGravity(Gravity.CENTER, 0, 0); 63 LinearLayout toastView = (LinearLayout) toast.getView(); 64 ImageView imageCodeProject = new ImageView(getApplicationContext()); 65 imageCodeProject.setImageResource(R.drawable.icon); 66 toastView.addView(imageCodeProject, 0); 67 toast.show(); 68 break; 69 case R.id.btnCustomToast: 70 LayoutInflater inflater = getLayoutInflater(); 71 View layout = inflater.inflate(R.layout.custom, 72 (ViewGroup) findViewById(R.id.llToast)); 73 ImageView image = (ImageView) layout 74 .findViewById(R.id.tvImageToast); 75 image.setImageResource(R.drawable.icon); 76 TextView title = (TextView) layout.findViewById(R.id.tvTitleToast); 77 title.setText("Attention"); 78 TextView text = (TextView) layout.findViewById(R.id.tvTextToast); 79 text.setText("完全自定义Toast"); 80 toast = new Toast(getApplicationContext()); 81 toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40); 82 toast.setDuration(Toast.LENGTH_LONG); 83 toast.setView(layout); 84 toast.show(); 85 break; 86 case R.id.btnRunToastFromOtherThread: 87 new Thread(new Runnable() { 88 public void run() { 89 showToast(); 90 } 91 }).start(); 92 break; 93 94 } 95 96 } 97 }
2. main.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" android:layout_width="fill_parent" 4 android:layout_height="fill_parent" android:padding="5dip" android:gravity="center"> 5 <Button android:layout_height="wrap_content" 6 android:layout_width="fill_parent" android:id="@+id/btnSimpleToast" 7 android:text="默认"></Button> 8 <Button android:layout_height="wrap_content" 9 android:layout_width="fill_parent" android:text="自定义显示位置" 10 android:id="@+id/btnSimpleToastWithCustomPosition"></Button> 11 <Button android:layout_height="wrap_content" 12 android:layout_width="fill_parent" android:id="@+id/btnSimpleToastWithImage" 13 android:text="带图片"></Button> 14 <Button android:layout_height="wrap_content" 15 android:layout_width="fill_parent" android:text="完全自定义" 16 android:id="@+id/btnCustomToast"></Button> 17 <Button android:layout_height="wrap_content" 18 android:layout_width="fill_parent" android:text="其他线程" 19 android:id="@+id/btnRunToastFromOtherThread"></Button> 20 21 </LinearLayout>
3. custom.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_height="wrap_content" android:layout_width="wrap_content" 5 android:background="#ffffffff" android:orientation="vertical" 6 android:id="@+id/llToast" > 7 <TextView 8 android:layout_height="wrap_content" 9 android:layout_margin="1dip" 10 android:textColor="#ffffffff" 11 android:layout_width="fill_parent" 12 android:gravity="center" 13 android:background="#bb000000" 14 android:id="@+id/tvTitleToast" /> 15 <LinearLayout 16 android:layout_height="wrap_content" 17 android:orientation="vertical" 18 android:id="@+id/llToastContent" 19 android:layout_marginLeft="1dip" 20 android:layout_marginRight="1dip" 21 android:layout_marginBottom="1dip" 22 android:layout_width="wrap_content" 23 android:padding="15dip" 24 android:background="#44000000" > 25 <ImageView 26 android:layout_height="wrap_content" 27 android:layout_gravity="center" 28 android:layout_width="wrap_content" 29 android:id="@+id/tvImageToast" /> 30 <TextView 31 android:layout_height="wrap_content" 32 android:paddingRight="10dip" 33 android:paddingLeft="10dip" 34 android:layout_width="wrap_content" 35 android:gravity="center" 36 android:textColor="#ff000000" 37 android:id="@+id/tvTextToast" /> 38 </LinearLayout> 39 </LinearLayout>