像Toast这样的通知,但持续时间更长

时间:2014-11-20 10:40:40

标签: java android notifications toast duration

我必须创建一个类似android toast通知的通知,但我需要从服务中抛出它,我需要在需要时关闭它。 标准吐司通知是完美的,但它太短了。

我尝试使用DialogFragment,但它需要关注(不像吐司),我不能从服务中抛出它,而只能从FragmentActivity中抛出它。

谢谢!

2 个答案:

答案 0 :(得分:1)

            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();

答案 1 :(得分:0)

通过在SO中快速搜索,您可以找到Toast durations

private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds

现在,您可以一个接一个地显示多个Toasts,看起来它的持续时间更长:

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左右。