需求:当弹出多条Toast提示时,最新的要覆盖掉之前的,不要等待前面完成再展示后面的
分析
- 建立Toast对象集合,当新的Toast显示时,遍历集合中的Toast对象,调用其cancel方法
- 设置Toast为单例,当有新提示时,会自动取消之前的
选择第二种方式
单例
public static Toast getInstance(Context context) {
if (sToast == null) {
synchronized (ToastUtils.class) {
if (sToast == null) {
sToast = new Toast(context);
}
}
}
return sToast;
}
自定义Toast
*/
public static void showShortToast(Context context, String format, Object... args) {
Toast toast = getInstance(context);
//设置Toast显示位置,居中,向 X、Y轴偏移量均为0
toast.setGravity(Gravity.CENTER, 0, 0);
//获取自定义视图
View view = LayoutInflater.from(context).inflate(R.layout.toast_layout, null);
TextView tvMessage = (TextView) view.findViewById(R.id.toast_content);
//设置文本
tvMessage.setText(format);
//设置视图
toast.setView(view);
//设置显示时长
toast.setDuration(Toast.LENGTH_SHORT);
//显示
toast.show();
}