Thời lượng của Toast LENGTH_LONG và LENGTH_SHORT là bao nhiêu


91

Tôi cần thời lượng chính xác là LENGTH_LONG và LENGTH_SHORT tính bằng mili giây (mili giây). Ngoài ra, tôi cần biết liệu thời lượng của tin nhắn Toast với LENGTH_LONG có cùng thời lượng trên bất kỳ điện thoại nào và với bất kỳ phiên bản API nào hay không.

Có ai đó biết thời lượng được xác định ở đâu không ?, Ý tôi là được định nghĩa bằng ms. Tôi biết rằng LENGTH_LONG là một số int const có giá trị 1. Nhưng tôi không thể tìm thấy thời lượng thực được xác định ở đâu.


bạn đã cố gắng chỉ định miliseocnds trong setDuration ()? Documents nói nó sẽ sử dụng cấu hình, nhưng không cụ thể về vấn đề này
Konstantin Pribluda

Câu trả lời:


181

Đã trả lời ở đây . Giống như bạn đã đề cập Toast.LENGTH_SHORTToast.LENGTH_LONGkhông phải bằng ms mà là 0 hoặc 1.

Thời lượng thực tế là:

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

14

Các Toast.LENGTH_SHORTToast.LENGTH_LONGchỉ là cờ.
Bạn có thể tìm thấy ở đây nguồn android chính thức nơi các cờ này được xác định:

public class NotificationManagerService extends SystemService {

    static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT;
    /** Amount of time (in milliseconds) a toast window can be shown. */
    //public static final int TOAST_WINDOW_TIMEOUT = 3500; // 3.5 seconds
    static final int SHORT_DELAY = 2000; // 2 seconds

    private void scheduleDurationReachedLocked(ToastRecord r)
    {
       mHandler.removeCallbacksAndMessages(r);
       Message m = Message.obtain(mHandler, MESSAGE_DURATION_REACHED, r);
       int delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
       //....
       mHandler.sendMessageDelayed(m, delay);
     }
}

1
Bây giờ, nó được đổi thành: static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT; static final int SHORT_DELAY = 2000; // 2 seconds still the same
Mayank Sharma

7

đúng là chúng tôi không được phép thay đổi thời lượng của Bánh mì nướng. Nhưng nếu bạn đang tìm kiếm một giải pháp thay thế và bạn thực sự cần làm điều này với Bánh mì nướng, thì bạn có thể thử cách này.

Giữ một bánh mì nướng trùng lặp khác ở dòng tiếp theo

Ví dụ:

Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();

Người dùng sẽ không phát hiện ra bất kỳ thay đổi nào trong quá trình chuyển đổi giữa 2 lời chúc.

Cảm ơn.


3
Vì nó được đề cập rõ ràng là 'không thể làm được' trong các câu trả lời trước, tôi đang cung cấp một phương pháp thay thế và tôi cũng đã đề cập rõ ràng. Mong bạn có thể hiểu. Tôi vừa tìm kiếm bây giờ và phát hiện ra cùng một loại câu hỏi ở đó và xem qua các câu trả lời, một số trong số chúng là lựa chọn thay thế. Nhưng tôi không tìm thấy bất kỳ phiếu bầu nào cho họ. Tốt hơn để tìm các lựa chọn thay thế hơn là bị nói là không thể đúng không? Hy vọng điều này có ý nghĩa. Android Toast có thể dài hơn “Toast.LENGTH_LONG” không?
PasinduJay

3

Bạn cần đặt ghi đè thời lượng, setDurationtrong hành động, ví dụ:

int s = 6000; // milisegundo    
Snackbar.make(coordinatorLayout, "This is my Snackbar", Snackbar.LENGTH_LONG).setDuration(s)
.show();

2

Tôi tự hỏi rằng tại sao bạn không sử dụng phương thức setDuration () được hỗ trợ trong lớp Toast.java ???

 /**
 * Set how long to show the view for.
 * @see #LENGTH_SHORT
 * @see #LENGTH_LONG
 */
public void setDuration(@Duration int duration) {
    mDuration = duration;
}

Bạn chỉ có thể gán một giá trị int: LENGTH_SHORT hoặc LENGTH_LONG.
Gabriele Mariotti

0

Thông qua thử nghiệm và lỗi, tôi đã tìm thấy thời Toast.LENGTH_LONGgian kéo dài rất gần 2500 mili giây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.