我必须创建一个像 android toast 通知这样的通知,但我需要从服务中抛出它,我需要在需要时关闭它。标准的吐司通知将是完美的,但它太短了。
我尝试使用DialogFragment,但它需要焦点(不像toast),我不能从服务中抛出它,而只能从FragmentActivity中抛出它。
谢谢!!
Toast toast = new Toast(this);
TextView textView=new TextView(this);
textView.setTextColor(Color.BLUE);
textView.setBackgroundColor(Color.TRANSPARENT);
textView.setTextSize(20);
textView.setText("My Toast For Long Time");
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setView(textView);
timer =new CountDownTimer(20000, 1000)
{
public void onTick(long millisUntilFinished)
{
toast.show();
}
public void onFinish()
{
toast.cancel();
}
}.start();
从 SO 中的快速搜索中,您可以找到 Toast 持续时间:
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds
现在,您可以一个接一个地显示多个 Toast,使其看起来持续时间更长:
final String msg = "Some text";
Runnable delayedToast = new Runnable() {
@Override
public void run() {
Toast.makeText(ctx, msg, Toast.LENGTH_LONG).show();
}
};
Toast.makeText(ctx, msg, Toast.LENGTH_LONG).show();
mHandler.postDelayed(delayedToast, 3000);
mHandler.postDelayed(delayedToast, 6000);
其中ctx
是活动/应用程序上下文,mHandler
是 UI 线程上的处理程序。持续时间应在 3000+3000+3500 左右。