今天发现CSDN客户端多次点击登陆时,Toast一直显示,甚至于我退出到系统界面还在显示,于是我在网上找到了解决方案,处于这个demo很简单,我就不详细说了,大家可以直接看代码:
新建一个工具类ToastUtils.java:
public class ToastUtils {
static Toast toast = null;
public static void showToast(Context context, String str, int time) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.toast_layout, null);
TextView tv = (TextView) view.findViewById(R.id.tv);
tv.setText(str);
//当Toast不为空时,我们就不用new一个新的Toast了,这样就不会出现多个了
if (toast == null) {
toast = new Toast(context);
toast.setGravity(Gravity.CENTER, 0, 0);//这里可以设置toast显示的位置
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(view);
}
toast.show();
}
}
这个是填充的布局:
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/toast_shape"
android:padding="10dp"
android:text="我是Toast"
android:textColor="#fff" />
这是shape文件:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<!-- 设置透明背景色 -->
<solid android:color="#a000" />
<!-- 设置一个白色边框 -->
<stroke
android:width="3px"
android:color="#FFFFFF" />
<!-- 设置四个圆角的半径 -->
<corners
android:bottomLeftRadius="10px"
android:bottomRightRadius="10px"
android:topLeftRadius="10px"
android:topRightRadius="10px" />
<!-- 设置一下边距,让空间大一点 -->
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
</shape>
好了,下面是效果图(大家注意看我要狂点咯 ):