Android 自定义Toast显示时间 但第二次失败
时间: 2023-11-28 20:51:40 浏览: 101
在 Android 中,可以使用 `Toast` 类实现简单的消息提示。默认情况下,`Toast` 的显示时间是 2 秒钟。如果需要自定义显示时间,可以使用 `setDuration(int duration)` 方法来设置。单位为毫秒。
例如,如果你需要将 `Toast` 的显示时间设置为 5 秒钟,代码如下:
```
Toast toast = Toast.makeText(getApplicationContext(), "Hello, world!", Toast.LENGTH_SHORT);
toast.setDuration(5000);
toast.show();
```
但是,如果你在第二次显示 `Toast` 的时候,还是使用了上述代码,那么就会出现显示时间不符合预期的情况。这是因为 `Toast` 是一个系统级别的组件,它的显示时间是受到限制的。在 Android 中,如果连续显示两个 `Toast`,第二个 `Toast` 的显示时间会被截断,只显示 1 秒钟左右。
为了解决这个问题,你可以考虑使用 `Handler` 或者 `Timer` 来实现延时显示。具体实现方式可以参考下面的示例代码:
```
private Toast mToast;
private Handler mHandler = new Handler();
private void showToast(String message, int duration) {
mHandler.removeCallbacksAndMessages(null); // 取消之前的定时任务
if (mToast != null) {
mToast.cancel();
mToast = null;
}
mToast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT);
mToast.setDuration(duration);
mToast.show();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mToast.cancel();
mToast = null;
}
}, duration);
}
```
在上面的代码中,我们创建了一个 `Handler` 对象,用于处理延时任务。在 `showToast` 方法中,我们先取消之前的定时任务和 `Toast`,然后重新创建一个 `Toast` 并设置其显示时间。接着,我们使用 `Handler.postDelayed` 方法来延时取消 `Toast` 的显示。这样就可以避免连续显示两个 `Toast` 的时候,第二个 `Toast` 的显示时间被截断的情况了。
阅读全文