2013-08-07 6 views
7

के बीच क्या अंतर है कोई मुझे बता सकता है कि setBackgroundResource(resourceid) और setBackgroundDrawable(getResource().getDrawable(drawableid)) के बीच एंड्रॉइड में क्या अंतर है?setBackgroundResource और setBackgroundDrawable

+0

दो पंक्तियों आपके द्वारा दी गई - कोई फर्क नहीं। हालांकि ध्यान दें कि 'सेटबैकग्राउंड ड्राउबल' को संसाधनों से आकर्षित करने की आवश्यकता नहीं है - यह इंटरनेट से डाउनलोड की गई छवि या फ्लाई पर बनाए गए बिटमैप हो सकती है। –

+0

लेकिन जब मैंने बटन को अक्षम कर दिया और फिर सक्षम किया, तो बटन पर ग्रे रंग का रंग नहीं हटा रहा था (यहां पहले मैंने बैकग्राउंड रिसोर्स का इस्तेमाल पृष्ठभूमि को फिर से खींचने के लिए किया था, लेकिन इसमें कोई अंतर नहीं दिख रहा है, और फिर मैंने सेट बैकग्राउंड ड्राउबल का उपयोग किया, फिर बटन पृष्ठभूमि बदल गई वास्तविक खींचने योग्य)। यदि दोनों में कोई फर्क नहीं पड़ता है तो दोनों विधियां अलग-अलग व्यवहार क्यों दिखाती हैं। –

+0

क्या आप समस्या का प्रदर्शन करने वाले कुछ कोड पोस्ट कर सकते हैं? –

उत्तर

7

आप Android source code for the View class पर स्वयं को देख सकते हैं और पता लगा सकते हैं कि बहुत कम अंतर है!

public void setBackgroundResource(int resid) { 
    if (resid != 0 && resid == mBackgroundResource) { 
     return; 
    } 

    Drawable d= null; 
    if (resid != 0) { 
     d = mResources.getDrawable(resid); 
    } 
    setBackground(d); 

    mBackgroundResource = resid; 
} 

और setBackground() सिर्फ setBackgroundDrawable() के माध्यम से कॉल ...

public void setBackground(Drawable background) { 
    //noinspection deprecation 
    setBackgroundDrawable(background); 
} 
+0

सीधे Droid के मुंह से अलग रंग चाहते हैं तो आपको राज्य चयनकर्ता पृष्ठभूमि सेट अप करने की आवश्यकता है। – samosaris

संबंधित मुद्दे