2011-11-01 5 views
59

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

누가 정의 된 기간을 알고 있습니까? 즉, ms로 정의됩니다. LENGTH_LONG은 값 1을 갖는 int int const입니다. 그러나 실제로 정의 된 기간이 어디인지는 알 수 없습니다.

+0

당신은 setDuration()에서 milliseocnds를 지정하려고 했습니까? 문서 도구는 사용자가 구성 할 수 있지만이 문제와 관련이 없다고 말합니다. –

답변

135

답변 됨 here. 당신이 Toast.LENGTH_SHORTToast.LENGTH_LONG가 MS에 아니지만 언급처럼 0 또는

실제 기간 (1)은 다음과 같습니다 내가 Toast.LENGTH_LONG을 발견시행 착오를 통해

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

2500ms

에 매우 가까이 지속
10

여기서 공식 android source 여기서 플래그이 정의됩니다.

public class NotificationManagerService extends SystemService { 

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

    private void scheduleTimeoutLocked(ToastRecord r){ 
     mHandler.removeCallbacksAndMessages(r); 
     Message m = Message.obtain(mHandler, MESSAGE_TIMEOUT, r); 
     long delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY; 
     mHandler.sendMessageDelayed(m, delay); 
    } 
} 
4

사실 우리는 토스트 기간을 변경할 수 없습니다. 그러나 대안을 찾고 있다면 토스트로해야합니다. 그러면 시도해 볼 수 있습니다.

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

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

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

감사합니다.

+2

이전 답글에서 '불가능'하다고 명확하게 언급되었으므로 대체 방법을 제공하고 있습니다. 분명히 언급했습니다. 당신이 이해할 수 있기를 바랍니다. 나는 지금 당장 검색 한 것과 같은 종류의 질문이 거기에 있었고 그 중 일부가 대안이라는 것을 알았습니다. 그러나 나는 그들에 대한 어떤 투표도 찾지 못한다. 불가능한 것만을 말하는 것보다 대안을 찾는 것이 더 낫습니다. 희망이 의미가 있습니다. [Android 토스트가 "Toast.LENGTH_LONG"보다 길 수 있습니까?] (http://stackoverflow.com/questions/2220560/can-an-android-toast-be-longer-than-toast-length-long) –