2013-08-07 9 views
7

Qualcuno potrebbe dirmi qual è la differenza tra setBackgroundResource(resourceid) e setBackgroundDrawable(getResource().getDrawable(drawableid)) in Android?Qual è la differenza tra setBackgroundResource e setBackgroundDrawable

+0

Le due linee che hai fornito - nessuna differenza. Tuttavia si noti che 'setBackgroundDrawable' non deve ottenere un drawable dalle risorse - può essere un'immagine scaricata da internet o una bitmap creata al volo. –

+0

ma quando ho disabilitato un pulsante e poi abilitato, il colore grigio del pulsante non viene rimosso (in questo caso ho usato setBackgroundResource per impostare nuovamente lo sfondo drawable ma non mostra alcuna differenza, quindi ho usato setBackgroundDrawable e lo sfondo del pulsante è cambiato in effettivo drawable). Perché entrambi i metodi mostrano comportamenti diversi se non hanno alcuna differenza. –

+0

Potresti postare del codice che mostri il problema? –

risposta

7

Puoi dare un'occhiata allo Android source code for the View class e scoprire che c'è poca differenza!

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

E setBackground() chiamate solo attraverso setBackgroundDrawable() ...

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

Direttamente dalla bocca del droide. – samosaris