टोस्ट LENGTH_LONG और LENGTH_SHORT की अवधि क्या है


94

मुझे मिलीसेकंड (ms) में LENGTH_LONG और LENGTH_SHORT की सटीक अवधि की आवश्यकता है। इसके अलावा, मुझे यह जानने की जरूरत है कि LENGTH_LONG के साथ टोस्ट संदेश की अवधि किसी भी फोन में और किसी API संस्करण के साथ समान अवधि होगी या नहीं।

क्या किसी को पता है कि परिभाषित अवधि कहां है?, मेरा मतलब है कि एमएस में परिभाषित किया गया है। मुझे पता है कि LENGTH_LONG मान 1 के साथ कुछ अंतर है। लेकिन मैं यह नहीं पा सका कि वास्तविक अवधि कहां परिभाषित है।


क्या आपने केवल सेटिसेडेशन () में मिलीसेकंड निर्दिष्ट करने की कोशिश की? डॉक्स का कहना है कि यह उपयोगकर्ता के लिए कॉन्फ़िगर करने योग्य होगा, लेकिन इस मुद्दे पर विशिष्ट नहीं हैं
कोन्सटेंटिन प्रिब्लूडा

जवाबों:


183

यहाँ उत्तर दिया गया । जैसे आपने उल्लेख किया है Toast.LENGTH_SHORTऔर Toast.LENGTH_LONGएमएस में नहीं है, लेकिन 0 या 1 है।

वास्तविक अवधि हैं:

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

14

Toast.LENGTH_SHORTऔर Toast.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
मयंक शर्मा

7

यह सच है कि हमें टोस्ट की अवधि को बदलने की अनुमति नहीं है। लेकिन अगर आप एक विकल्प की तलाश कर रहे हैं और आपको वास्तव में टोस्ट के साथ ऐसा करने की आवश्यकता है, तो आप यह कोशिश कर सकते हैं।

अगली पंक्ति में एक और डुप्लिकेट टोस्ट रखें

उदाहरण के लिए:

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

उपयोगकर्ता 2 टोस्टों के बीच संक्रमण में किसी भी परिवर्तन का पता नहीं लगाएगा।

धन्यवाद।


3
चूँकि यह पिछले उत्तरों में स्पष्ट रूप से 'असंभव' के रूप में उल्लिखित है जो मैं एक वैकल्पिक विधि प्रदान कर रहा हूँ और मैंने स्पष्ट रूप से इसका उल्लेख भी किया है। आशा है की तुम समझ सकते हो। मैंने अभी-अभी खोजा और पता चला कि एक ही तरह का प्रश्न था और उत्तर के माध्यम से उनमें से कुछ विकल्प हैं। लेकिन मुझे उनके लिए कोई वोट नहीं मिला। केवल सही कहे जाने की तुलना में विकल्प खोजने के लिए बेहतर है? आशा है कि यह समझ में आता है। क्या एक Android टोस्ट "Toast.LENGTH_LONG" से अधिक लंबा हो सकता है?
पासिन्दुजय

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

आप केवल एक int मान दे सकते हैं: LENGTH_SHORT, या LENGTH_LONG।
गैब्रिएल मैरीओटी

0

परीक्षण और त्रुटि के माध्यम से मुझे 2500ms केToast.LENGTH_LONG करीब रहता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.