2010-09-23 35 views
28

Có cách nào tôi có thể cho biết Thông báo Bánh mì nướng chỉ hiển thị trong một khoảng thời gian nhất định không. Nói chung ngắn hơn sau đó một thông báo bánh mì nướng thường xuyên.Đặt Bánh mì nướng Xuất hiện Chiều dài

+1

Tôi đã phát triển một lớp Bánh mì nướng tùy chỉnh mà bạn có thể hiển thị Bánh mì nướng trong một khoảng thời gian nhất định ... có xem câu trả lời của tôi http://stackoverflow.com/questions/2220560/can-an-android-toast -be-longer-than-toast-length-long/21203554 # 21203554 –

Trả lời

88

Tôi tìm thấy một giải pháp cho điều này bằng cách gọi toast.cancel() sau khi một sự chậm trễ nhất định đó là ngắn hơn so với thời gian bánh mì nướng tiêu chuẩn.

 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

Giải pháp tuyệt vời! Cảm ơn rất nhiều – Komi

+0

Cách giải quyết tốt. Nó thực sự đã giúp tôi! – Antonis

+0

+1 cho giải pháp đơn giản –

6

số

Bạn có thể làm một cái gì đó như:

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

nhưng nó sẽ không hiển thị chính nó.

Thời lượng phải là LENGTH_SHORT hoặc LENGTH_LONG.

1

Bạn có thể thiết lập một khoảng thời gian lâu hơn bằng cách sử dụng một hack, như mô tả here

0

// thử nó

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

Tôi không nghĩ rằng điều này làm bất cứ điều gì để kéo dài thời gian. Nếu thời lượng không phải là LENGTH_SHORT hoặc LENGTH_LONG, thời lượng mặc định là LENGTH_LONG. Phương thức này chấp nhận các giá trị tùy ý trong tự nhiên, nhưng trên thực tế, chỉ thay đổi hành vi (chiều dài bánh mì nướng) nếu giá trị không bằng 0. –

4

Hãy thử

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

Hy vọng điều này giúp đỡ này .. Thưởng thức .. !!!

0

Lớp chứng khoán Android Toast được mã hóa để chỉ chấp nhận thông số Toast.LENGTH_SHORT hoặc Toast.LENGTH_LONG khi gọi Toast. Các giá trị của các tham số này tương ứng là 0 và 1 và không chấp nhận bất kỳ giá trị mili giây nào khi gọi hàm setDuration(); Nếu bạn phải hiển thị một Bánh mì nướng trong một thời hạn khác với bạn có thể cân nhắc sử dụng một lớp học từ thư viện SuperToasts của tôi. Lớp SuperToast trong thư viện là bắt chước lớp chứng khoán Android Toast và có thể có bất kỳ giá trị mili giây nào được sử dụng làm tham số thời lượng. Tôi khuyên bạn không nên sử dụng lớp này để hiển thị số Toast dài hơn so với thời lượng tối đa của bánh mì nướng Android do hiệu ứng kéo dài của các dòng giới hạn này. Tôi khuyên bạn nên sử dụng lớp SuperActivityToast để hiển thị thông báo Bánh mì nướng trong Hoạt động/Phân đoạn vì Bánh mì nướng sẽ bị hủy cùng với Hoạt động của bạn sẽ loại bỏ mọi cơ hội của thông báo kéo dài. Để sử dụng lớp này bạn có thể tạo một đối tượng mới:

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

Hoặc sử dụng phương pháp tĩnh:

SuperActivityToast.createDarkSuperActivityToast(this, "Hello world!", SuperToast.DURATION_SHORT).show(); 

Có rất nhiều lựa chọn tùy biến, bạn có thể sử dụng với thư viện là tốt, kiểm tra Wiki trang!

-1

Đây là một cách khác để cấu hình thời gian cho mỗi sự lựa chọn của bạn:

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

Chú ý: Thời hạn được quy định trong mili giây.

+0

Đã thử mà không thành công ... – zeflex

Các vấn đề liên quan