2013-08-07 93 views
7

誰能告訴我在android中setBackgroundResource(resourceid)setBackgroundDrawable(getResource().getDrawable(drawableid))有什麼區別?setBackgroundResource和setBackgroundDrawable的區別是什麼

+0

您提供的兩行 - 沒有什麼區別。不過請注意,'setBackgroundDrawable'不必從資源中獲取drawable,它可以是從互聯網上下載的圖像或者動態創建的位圖。 –

+0

但當我禁用一個按鈕,然後啓用灰色的按鈕不刪除(在這裏首先我用setBackgroundResource設置的背景可再次繪製,但它沒有顯示任何區別,然後我用setBackgroundDrawable然後按鈕背景更改爲實際可繪製)。爲什麼兩種方法如果沒有區別就表現出不同的行爲。 –

+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

直接從機器人的嘴中取出。 – samosaris

相關問題