Android中的Toast是一种简易的消息提示框,toast提示框不能被用户点击,toast会根据用户设置的显示时间后自动消失。
一.显示默认的Toast
实现代码:
1
Toast.makeText(getApplicationContext(), "显示默认的Toast", Toast.LENGTH_LONG).show();
有两种方法来创建默认的Toast,下面我们来都看一下:
1.显示resource中的资源
1
Toast.makeText(Context context, int resId, int duration).show();
参数: context是toast显示在哪个上下文,通常是当前Activity;resId指显示内容引用Resouce那条数据,就是从R类中去指定显示的消息内容;duration指定显示时间, Toast默认有LENGTH_SHORT和LENGTH_LONG两常量,分别表示显示时间的长短;
2.显示自定义的内容
1
Toast.makeText(Context context, CharSequence text, int duration).show();
参数: context和duration与第一个方法相同,参数text可以自己写消息内容;
二.显示带图片的Toast
实现代码:
1
Toast toast = Toast.makeText(getApplicationContext(), "显示带图片的Toast", Toast.LENGTH_LONG);
2
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
3
LinearLayout toastView = (LinearLayout) toast.getView();
4
ImageView imageCodeProject = new ImageView(getApplicationContext());
5
imageCodeProject.setImageResource(R.drawable.wirelessqa);
6
toastView.addView(imageCodeProject, 0);
7
toast.show();
三.显示自定义的Toast
实现代码:
01
LayoutInflater inflater = getLayoutInflater();
02
03
View layout = inflater.inflate(R.layout.define, (ViewGroup) findViewById(R.id.define));
04
05
TextView title = (TextView) layout.findViewById(R.id.define_title);
06
title.setText("这个是自定义的哦");
07
ImageView img = (ImageView) layout.findViewById(R.id.define_img);
08
img.setImageResource(R.drawable.wirelessqa);
09
TextView text = (TextView) layout.findViewById(R.id.define_text);
10
text.setText("www.wirelessqa.com");
11
Toast toast = new Toast(getApplicationContext());
12
toast.setGravity(Gravity.LEFT | Gravity.CENTER, 0, 0);
13
toast.setDuration(Toast.LENGTH_LONG);
14
// 替换掉原有的ToastView
15
toast.setView(layout);
16
toast.show();
四.显示其它线程的Toast
实现代码:
01
displayThread.setOnClickListener(new OnClickListener() {
02
03
@Override
04
05
public void onClick(View v) {
06
07
new Thread(new Runnable() {
08
09
@Override
10
11
public void run() {
12
13
otherThreadToast();
14
15
}
16
17
}).start();
18
19
}
20
21
});
22
23
}
24
25
private void otherThreadToast() {
26
27
handler.post(new Runnable() {
28
29
@Override
30
31
public void run() {
32
33
Toast.makeText(getApplicationContext(), "这个是其它线程的Toast哟", Toast.LENGTH_LONG).show();
34
35
}
36
37
});
38
39
}
五.显示自定义的位置
实现代码:
1
Toast toast = Toast.makeText(getApplicationContext(), "自定义Toast显示位置(上)", Toast.LENGTH_LONG);
2
3
toast.setGravity(Gravity.TOP, 0, 0);
4
5
toast.show();
两个方法可以设置显示位置:
方法一:setGravity(int gravity, int xOffset, int yOffset)三个参数分别表示(起点位置,水平向右位移,垂直向下位移)
方法二:setMargin(float horizontalMargin, float verticalMargin)
以横向和纵向的百分比设置显示位置,参数均为float类型(水平位移正右负左,竖直位移正上负下)
1
//设置Toast显示位置(起点位置,水平向右位移,垂直向下位移) toast.setGravity(Gravity.TOP | Gravity.LEFT, 0, 200);
2
//Toast显示位置,以横向和纵向的百分比计算,参数均为float类型(水平位移正右负左,竖直位移正上负下)
3
toast.setMargin(-0.5f, 0f);