安卓10 写出Toast自定义时长方法,并提供取消方法,出现只有第一次生效的问题 如何解决
时间: 2023-11-28 16:51:08 浏览: 89
在Android 10中,Toast的默认显示时长为4秒钟。要自定义Toast的显示时长,可以使用Handler和Runnable来实现。
下面是一个示例代码,可以自定义Toast的显示时长,并提供取消方法:
```
public class CustomToast {
private static Toast toast;
public static void showToast(Context context, String message, int duration) {
if (toast != null) {
toast.cancel();
}
toast = Toast.makeText(context, message, Toast.LENGTH_LONG);
toast.setDuration(duration);
toast.show();
// 取消toast
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (toast != null) {
toast.cancel();
toast = null;
}
}
}, duration);
}
}
```
在调用该方法时,可以传入自定义的显示时长,单位是毫秒。例如:
```
CustomToast.showToast(this, "Hello World!", 3000); // 显示3秒钟
```
如果出现只有第一次生效的问题,可能是由于在多次调用时没有及时取消之前的Toast,导致多个Toast重叠在一起显示。可以在每次调用时先判断是否有之前的Toast未取消,如果有则先取消之前的Toast。
阅读全文