2010-09-23 105 views
28

是否有反正我可以告诉吐司通知只显示一段指定的时间。通常短于常规的吐司消息。设置吐司显示长度

+1

我已经开发了一个自定义Toast类,你可以用它显示Toast一段指定的时间...看看我的答案http://stackoverflow.com/questions/2220560/can-an-android-toast - 更长的比烤面包长度长/ 21203554#21203554 – 2014-01-18 12:43:25

回答

88

我找到了解决此通过调用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); 
+0

伟大的解决方案!非常感谢 – Komi 2012-07-26 14:43:16

+0

很好的解决方法。它真的帮助了我! – Antonis 2013-03-05 09:38:12

+0

+1简单解决方案 – 2013-04-29 12:48:48

6

你可以这样做:

Toast a = Toast.makeText(this, "a", Toast.LENGTH_LONG); 
a.setDuration(300); 

,但它不会显示自己。

持续时间应该是LENGTH_SHORTLENGTH_LONG

1

可以通过使用一劈设置更长的持续时间,如所述的here

0

//尝试

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(); 
} 
+1

我认为这不会延长持续时间。如果持续时间不是LENGTH_SHORT或LENGTH_LONG,则默认为LENGTH_LONG。该方法本质上接受任意值,但实际上,只有在值不为零时才会改变行为(吐司长度)。 – 2013-02-13 19:34:58

4

试试这个

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

希望这有助于..享受.. !!!

0

股票Android Toast类被编码为在接收Toast时仅接受Toast.LENGTH_SHORT或Toast.LENGTH_LONG参数。这些参数的值分别为0和1,并且在调用setDuration()时不会接受任何毫秒值。如果您必须在不同的时间内显示Toast,则可以考虑使用我的SuperToasts图书馆中的课程。库中的SuperToast类是股票Android Toast类的模仿,可以将任何毫秒值用作持续时间参数。由于这些敬酒的挥之不去,我不建议使用此课程来展示Toast 长于最大股票Android Toast长度的。我建议您使用SuperActivityToast类来在活动/片段中显示Toast消息,因为Toast将随着您的活动一起销毁,从而消除任何延迟消息的机会。要使用这个类,你可以创建一个新的对象:

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页!

-1

下面是配置每个你所选择的时间另一种方式:

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

注:时间以毫秒为单位。

+0

尝试没有成功... – zeflex 2014-08-28 15:31:58