2011-10-10 24 views
5

Sto provando a impostare il padding di un ImageView. Il mio codice è inferiore aandroid ImageView setPadding non ha effetto

private void createEpisodeView() { 
    float scale = this.getResources().getDisplayMetrics().density; 
    int padding = (int) (PADDING * scale + 0.5f); 

    rlItemsRoot = (LinearLayout) findViewById(R.id.rl_items_root); 

    for (int i = 0; i < GameLevels.TOTAL_EPISODES; i++) { 
     ImageView iv = new ImageView(this); 

     iv.setPadding(padding, padding, padding, padding);   
     iv.setBackgroundResource(R.drawable.icon_small); 

     rlItemsRoot.addView(iv); 
    } 

} 

Ma non ha alcun effetto. ma quando ho impostato questo in XML sembra a posto.

+0

il padding è il valore predefinito espresso in pixel quando lo impostiamo dinamicamente .. In xml stai usando gli stessi valori in px o dip –

+0

Sto usando dip in XML e qui sto convertendo pix in DIP. e 5 costante è annullare l'effetto della conversione in int. cioè 0,7 è 0 in int ma se si aggiunge 0,5 allora non lo sarà. –

risposta

14

A voi si sono accorti da soli che si sta utilizzando

iv.setBackgroundResource(R.drawable.icon_small); 

Questo imposterà lo sfondo per l'ImageView. L'immagine di sfondo riempirà l'intera vista perché è dietro a tutto il contenuto nella vista.

Usa

iv.setImageResource(R.drawable.icon_small); 

invece.

+0

great thnx ..... –

+0

+1 bel concetto. –

+1

Grazie, sono contento di non aver bisogno di un wrapper linearelayout non necessario attorno a imageview per ottenere il padding! – JoonasS

4

Invece di impostare

iv.setBackgroundResource(R.drawable.icon_small); 

set

iv.setImageResource(R.drawable.icon_small); 

e problema risolto :)

Se qualsiasi organismo conosce il motivo preghiamo di rispondere.

+2

Il padding è perso quando si imposta lo sfondo. Devi 'setPadding (..)' dopo aver impostato lo sfondo, non prima. Questo è indicato nella documentazione di 'setBackgroundDrawable (..)', ma Google trascura di menzionarlo per 'setBackgroundResource (..)'. –

+1

Anche accettare la risposta di un'altra persona è una buona idea –

+1

@HamzehSoboh fatto. Grazie per la correzione :-) –

Problemi correlati