介绍
官方文档上是这么介绍的,Toast是一种简易的消息提示框,该提示框不能被用户点击,且永远不会获得焦点。同时,Toast显示的时间有限,过一定的时间就会自动消失,具体时间限制由用户设定。
常用API
显示时间常量
LENGTH_LONG:指定显示时间为长时间(默认5000毫米)
LENGTH_SHORT:指定显示时间为短时间(默认1000毫米)
API
cancel():
如果Toast在显示,则取消显示;如果Toast未显示,此Toast不再显示,即使调用show()方法。makeText(Context context, int resId, int duration):静态方法创建Toast对象
makeText(Context context, CharSequence text, int duration):静态方法创建Toast对象
setDuration(int duration):设置Toast显示时间
setGravity(int gravity, int xOffset, int yOffset):设置Toast显示的位置
setMargin(float horizontalMargin, float verticalMargin):设置Toast中View的间距
setText(int resId):设置显示的内容,其中resId为Resouce那条数据的索引
setText(CharSequence s):设置显示的内容,其中s即为显示的内容
show():显示Toast
创建Toast
构造方法
Toat toast = new Toast(context);
View toastView = LayoutInflater.from(this).inflate(R.layout.layout_image, null, false);
toast.setView(toastView);
toast.show();
注:使用构造方法创建Toast对象时,默认并未创建toast显示信息的view。若不调用setView()设置显示信息的View,会报异常 - java.lang.RuntimeException: setView must have been called。若采用构造方法创建Toast对象,在调用show()方法前,应先调用setView()设置显示的View.
makeText(Context context, int resId, int duration)
context:是toast显示在哪个上下文,通常是当前Activity;
resId:显示内容引用Resouce那条数据,就是从R类中去指定显示的消息内容;
duration:指定显示时间,Toast默认有LENGTH_SHORT和LENGTH_LONG两常量,分别表示短时间显示和长时间显示。
makeText(Context context, CharSequence text, int duration)
text:显示的内容
Toast示例
默认Toast
Toast toast = Toast.makeText(mContext, “我是一个默认的Toast”, Toast.LENGTH_LONG);
toast.show();
自定义位置的Toast
Toast toast = Toast.makeText(mContext, “我是一个居中的Toast”, Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
带图片的Toast
Toast toast = Toast.makeText(mContext, “我是一个带图片的Toast”, Toast.LENGTH_LONG);
LinearLayout toastView = (LinearLayout) toast.getView();
ImageView imageView = new ImageView(this);
imageView.setImageResource(R.mipmap.ic_img);
toastView.addView(imageView, 0);
toast.show();
完全自定义的Toast
Toast toast = new Toast(this);
View toastView = LayoutInflater.from(this)
.inflate(R.layout.layout_image, null, false);
toast.setView(toastView);
toast.show();
其他线程Toast
private void displayOtherThread() {
new Thread(new Runnable() {
@Override
public void run() {
showToast();
}
}).start();
}
private void showToast() {
mHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "我是一个其他线程的Toast", Toast.LENGTH_LONG).show();
}
});
}