【发布时间】:2014-03-11 18:26:52
【问题描述】:
目前 Toast 只存在两个持续时间:Toast.LENGTH_SHORT 和 Toast.LENGTH_LONG...
但是,如果您想在 Android 中增加 Toast 的持续时间怎么办?
这是我想出并想分享的一个技巧:
public void createToast(Context context, String s) {
int duration = Toast.LENGTH_LONG;
final Toast toast = Toast.makeText(context, s, duration);
toast.show();
new CountDownTimer(5000, 1000)
{
public void onTick(long millisUntilFinished) {
if (toast.getView().getWindowToken() != null)
toast.show();
else
cancel();
}
public void onFinish() {
if (toast.getView().getWindowToken() !=null)
toast.show();
else
cancel();
}
}.start();
}
如果您想要更长的吐司时间,只需增加CountDownTimer 的持续时间即可。
请记下这些行
if (toast.getView().getWindowToken !=null)
如果 toast 的 windowToken 为空,这几乎是说 Toast 已经离开了视图,(即 toast 被取消了)。
我在网上找到了一些增加 toast 持续时间的解决方案,但如果 toast 已被用户解除,我找不到一个可以保留解除的解决方案。因此,我将上述内容拼凑在一起以保留正常的 Toast 功能。
让我知道你的想法!
【问题讨论】:
-
感谢您的分享。你能把你的技巧放在下面的答案中吗?
-
这很有趣..酷!
-
一个很好的解决方法,但我相信如果您打算向用户显示持续时间超过 3.5 秒的内容,状态栏通知会更合适。但同样,这是一个很好的分享。谢谢。
-
嘿@MattK,感谢您的回复!我正在考虑状态栏通知,但遗憾的是它与我正在使用的 UI 没有意义:( 哈哈
标签: android android-toast