目前,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)
如果吐司的windowToken
为空,那就是Toast已经离开了视图,(即吐司被取消了)。
我在网上找到了一些增加敬酒持续时间的解决方案,但是如果用户已经解雇了吐司,我就找不到解决方案。所以我将上述内容拼凑在一起以保留正常的Toast功能。
让我知道你的想法!
答案 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();
}