在android开发中Toast是比较常用的消息提示框,接下来我们看看Toast的用法。
1.一般用法
通常我们使用Toast的方法是:Toast.makeText
Toast.makeText
该方法很简单:Toast.makeText(Context,"默认的Toast",Toast.LENGTH_LONG).show();
这样就可以显示一个Toast啦。
2.自定义位置用法
有时候我们的消息提示框未必在底部显示的,有可能需要在顶部提示~~那么该怎么使用才能令Toast显示在顶部呢?
//这一步跟上面的写法差不多
Toast toast=Toast.makeText(getApplicationContext(), "自定义显示位置的Toast", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP|Gravity.CENTER, -50, 100);
toast.show();//第一个参数:设置toast在屏幕中显示的位置。我现在的设置是居中靠顶
//第二第三个参数分别为toast在x,y上的偏移量 //如果你设置的偏移量超过了屏幕的范围,toast将在屏幕内靠近超出的那个边界显示
3.带图片的Toast
有时候光是文字的Toast提示框已经满足不了我们了~还需要图片~
那么接下来我们看一下怎么样把图片加上去
Toast toast=Toast.makeText(getApplicationContext(), "显示带图片的toast", 3000);
toast.setGravity(Gravity.CENTER, 0, 0);
//创建图片视图对象
ImageView imageView= new ImageView(getApplicationContext());
//设置图片
imageView.setImageResource(R.drawable.ic_launcher);
//获得toast的布局
LinearLayout toastView = (LinearLayout) toast.getView();
//设置此布局为横向的
toastView.setOrientation(LinearLayout.HORIZONTAL);
//将ImageView在加入到此布局中的第一个位置
toastView.addView(imageView, 0);
toast.show();
4.自定义Toast
LayoutInflater inflater = getLayoutInflater();
//通过制定XML文件及布局ID来填充一个视图对象
View layout = inflater.inflate(R.layout.custom2,(ViewGroup)findViewById(R.id.llToast));
ImageView image = (ImageView) layout.findViewById(R.id.tvImageToast);
//设置图片
image.setImageResource(R.drawable.ic_launcher);
//生成textview对象
TextView title = (TextView) layout.findViewById(R.id.tvTitleToast);
//设置标题
title.setText("标题栏");
TextView text = (TextView) layout.findViewById(R.id.tvTextToast);
设置内容
text.setText("完全自定义Toast");
Toast toast= new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER , 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
5.在其他线程调用Toast
toas在主线才能够使用~为什么?相信大家都知道android的ui只能在主线程运行。那么我们在别的线程想用到toast怎么办呢?
我们可以使用handler~至于不熟悉handler的童鞋~~自己去百度吧~
最后提一下Toast的使用技巧:
在开发过程中必然会大量使用到toast,那么每个地方都写一大串代码明显是不可行的,就算是最简单的Toast.makeText()也每次都要传三个参数。那么我们如何简化toast的使用呢?
方法一:
我们可以在activity的基类封装toast,在开发中我们常常会有一个activity的基类。那么我们的toast可以写在这个地方
方法二:
定义一个工具类,该工具类里有一个静态调用toast的方法
public static void showToast(String str){
if (mToast == null) {
mToast = Toast.makeText(getApplicationContext(), str,Toast.LENGTH_LONG);
} else {
mToast.setText(str);
}
mToast.show();
}
那么我们只需要:类名.showToast("Test");
就可以调用了,相比每次都要传三个参数最后还要调用一下show()的用法,是不是方便很多呢?