增加祝酒的持续时间

时间:2014-03-11 18:26:52

标签: android android-toast

目前,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)

如果吐司的windowToken为空,那就是Toast已经离开了视图,(即吐司被取消了)。

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

让我知道你的想法!

2 个答案:

答案 0 :(得分:1)

首先,我没有看到你的问题。如果问题是“你怎么想?”,我怀疑你需要Toast长于Toast.LENGTH_LONG的情况。如果Toast.LENGTH_LONG如果短,则最好使用AlertDialog

无论如何,你的解决方案看起来有点沉重......你可以堆叠Toast消息,这样你就可以使用相同的消息制作两个或更多Toast个并一个接一个地实例化。这应该是你正在寻找的效果。

答案 1 :(得分: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();
}