【发布时间】:2011-04-16 01:28:05
【问题描述】:
无论如何,我可以告诉 Toast 通知仅在指定的时间内显示。通常比普通的 toast 消息短。
【问题讨论】:
-
我开发了一个自定义 Toast 类,您可以使用它在指定的时间内显示 Toast...看看我的答案stackoverflow.com/questions/2220560/…
无论如何,我可以告诉 Toast 通知仅在指定的时间内显示。通常比普通的 toast 消息短。
【问题讨论】:
我通过在比标准 toast 持续时间短的一定延迟后调用 toast.cancel() 找到了解决方案。
final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 1000);
【讨论】:
没有。
你可以这样做:
Toast a = Toast.makeText(this, "a", Toast.LENGTH_LONG);
a.setDuration(300);
但它不会显示自己。
持续时间应为LENGTH_SHORT 或LENGTH_LONG。
【讨论】:
试试这个
final Toast toast = Toast.makeText(getBaseContext(), "YOUR MESSAGE",Toast.LENGTH_SHORT);
toast.show();
new CountDownTimer(10000, 1000)
{
public void onTick(long millisUntilFinished) {toast.show();}
public void onFinish() {toast.cancel();}
}.start();
希望对您有所帮助.. 享受..!!!
【讨论】:
您可以使用 hack 设置更长的持续时间,如 here 所述
【讨论】:
//试试看
public void myToast(String message) {
LayoutInflater myInflator = getLayoutInflater();
View myLayout = myInflator.inflate(R.layout.custom_layout,
(ViewGroup) findViewById(R.id.toastlayout));
TextView myMessage = (TextView) myLayout.findViewById(R.id.label);
myMessage.setText(message);
Toast toast = new Toast(getApplicationContext());
toast.setView(myLayout);
toast.setDuration(400);
myMessage.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL
| Gravity.CENTER_VERTICAL);
toast.show();
}
【讨论】:
普通的 Android Toast 类被编码为在调用 Toast 时仅接受 Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG 参数。这些参数的值分别为 0 和 1,调用 setDuration() 时不接受任何毫秒值;如果您必须显示 Toast 的持续时间与您可以考虑使用我的 SuperToasts 库中的类不同。库中的 SuperToast 类模仿了现有的 Android Toast 类,可以将任何毫秒值用作持续时间参数。由于这些 Toast 的挥之不去的影响,我不建议使用此类来显示比最大库存 Android Toast 长度长的 Toast。我建议您使用 SuperActivityToast 类在 Activity/Fragment 中显示 Toast 消息,因为 Toast 将与您的 Activity 一起被销毁,从而消除了任何挥之不去的消息的机会。要使用此类,您可以创建一个新对象:
SuperActivityToast superActivityToast = new SuperActivityToast(this);
superActivityToast.setDuration(SuperToast.DURATION_SHORT);
// setDuration(); can also accept millisecond values
// superActivityToast.setDuration(1000);
superActivityToast.setText("Hello world!");
superActivityToast.show();
或者使用静态方法:
SuperActivityToast.createDarkSuperActivityToast(this, "Hello world!", SuperToast.DURATION_SHORT).show();
您还可以在库中使用大量自定义选项,请查看Wiki 页面!
【讨论】:
这是另一种配置时间的方法:
public void showMsg(String msg, final long duration) {
final Toast toast = Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG);
toast.show();
Thread t = new Thread() {
public void run(){
try {
sleep(duration);
toast.cancel();
} catch (InterruptedException e) {
e.printStackTrace();
}
finally { }
}
};
t.start();
}
注意:持续时间以毫秒为单位。
【讨论】: