2010-09-23 55 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