토스트 LENGTH_LONG 및 LENGTH_SHORT의 기간은 얼마입니까?


94

LENGTH_LONG 및 LENGTH_SHORT의 정확한 기간이 밀리 초 (ms)로 필요합니다. 또한 LENGTH_LONG을 사용하는 토스트 메시지의 지속 시간이 모든 전화기 및 API 버전에서 동일한 지속 시간을 갖는지 알아야합니다.

누군가 정의 된 기간이 어디에 있는지 알고 있습니까?, 내 말은 ms로 정의되어 있습니다. LENGTH_LONG이 값이 1 인 int const라는 것을 알고 있지만 실제 기간이 정의 된 위치를 찾을 수 없습니다.


setDuration ()에서 milliseocnds를 지정하려고 했습니까? 문서에서는 사용자가 구성 할 수 있지만이 문제에 대해 구체적으로 설명하지 않습니다
Konstantin Pribluda

답변:


183

여기에 답변 했습니다 . 당신이 언급 한 것처럼 Toast.LENGTH_SHORTToast.LENGTH_LONGMS하지만, 0 또는 1에 있지 않습니다.

실제 기간은 다음과 같습니다.

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

14

Toast.LENGTH_SHORTToast.LENGTH_LONG단지 플래그입니다.
여기 에서 이러한 플래그 가 정의 된 공식 안드로이드 소스를 찾을 수 있습니다 .

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
: 지금, 그것은이 변경됩니다 static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT; static final int SHORT_DELAY = 2000; // 2 seconds still the same
Mayank 샤르마

7

토스트 기간을 변경할 수 없다는 것은 사실입니다. 그러나 대안을 찾고 있고 정말 토스트로 이것을해야한다면 이것을 시도 할 수 있습니다.

다음 줄에 또 다른 중복 토스트 유지

전의:

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

사용자는 2 개의 토스트 사이의 전환 변화를 감지하지 못합니다.

감사.


3
이전 답변에서 '할 수 없음'으로 명확하게 언급되었으므로 대체 방법을 제공하고 있으며 명확하게 언급했습니다. 이해할 수 있기를 바랍니다. 방금 검색했는데 같은 종류의 질문이 있다는 것을 알았고 그중 일부는 대안 인 답변을 살펴 봅니다. 그러나 나는 그들에 대한 반대표를 찾지 못했습니다. 불가능하다고 말하는 것보다 대안을 찾는 것이 더 낫습니까? 이것이 이해되기를 바랍니다. Android Toast는 "Toast.LENGTH_LONG"보다 길 수 있습니까?
PasinduJay 2010 년

3

다음과 setDuration같이 작업에서 기간 재정의를 설정해야합니다 .

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

2

Toast.java 클래스에서 지원되는 setDuration () 메소드를 왜 사용하지 않는지 궁금합니다. ??

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

정수 값 (LENGTH_SHORT 또는 LENGTH_LONG) 만 할당 할 수 있습니다.
Gabriele Mariotti

0

시행 착오를 통해 2500ms에Toast.LENGTH_LONG 매우 가까운 지속 시간 을 발견했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.