1

目前 Toast 只存在两个持续时间:Toast.LENGTH_SHORTToast.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)

如果windowTokentoast 的 为空,这几乎是说 Toast 已经离开了视图,(即 toast 被取消了)。

我在网上找到了一些解决方案来增加敬酒的持续时间,但是如果敬酒已被用户解雇,我找不到一个可以保留解雇的解决方案。因此,我将上述内容拼凑在一起以保留正常的 Toast 功能。

让我知道你的想法!

4

2 回答 2

1

首先,我没有看到你的问题。如果问题是“你怎么看?”,我怀疑你需要ToastToast.LENGTH_LONG. 如果Toast.LENGTH_LONG很短,可能最好使用AlertDialog.

无论如何,您的解决方案似乎有点重...您可以堆叠Toast消息,因此您可以使用相同的消息制作两个或多个Toasts 并一个接一个地实例化。这样做的效果应该是您正在寻找的。

于 2014-03-11T18:44:43.587 回答
0

我发布了这个问题有点奇怪,我真正想做的是与大家分享以下关于如何在 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();
}
于 2014-03-11T18:56:09.050 回答