2011-10-10 22 views
5

Estoy tratando de establecer el relleno de un ImageView. Mi código está por debajo deandroid ImageView setPadding no tiene efecto

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

} 

Pero no tiene ningún efecto. pero cuando configuro esto en XML se ve bien.

+0

El relleno se expresa por defecto en píxeles cuando estamos configurando dinámicamente eso .. En xml r u usando los mismos valores en px o dip –

+0

Estoy usando dip en XML y aquí estoy convirtiendo pix en DIP. y 5 constante es cancelar el efecto de la conversión a int. es decir 0.7 es 0 en int pero si agrega 0.5 entonces no lo hará. –

Respuesta

14

A ustedes cuentan a sí mismo que está utilizando

iv.setBackgroundResource(R.drawable.icon_small); 

Esto establecerá el Fondo para el ImageView. La Imagen de fondo llenará toda la vista porque está detrás de todo el contenido de la Vista.

Uso

iv.setImageResource(R.drawable.icon_small); 

lugar.

+0

great thnx ..... –

+0

+1 buen concepto. –

+1

¡Gracias, me alegro de que no necesité hacer una envoltura lineal innecesaria alrededor de la vista de la imagen para obtener relleno! – JoonasS

4

En lugar de establecer

iv.setBackgroundResource(R.drawable.icon_small); 

conjunto

iv.setImageResource(R.drawable.icon_small); 

y problema resuelto :)

Si cualquier cuerpo sabe la razón por favor, responda.

+2

Su relleno se pierde cuando configura el fondo. Tienes que 'configurarPadding (..)' después de establecer el fondo, no antes. Esto se señala en la documentación para 'setBackgroundDrawable (..)', pero Google no hace mención de 'setBackgroundResource (..)'. –

+1

Aceptar la respuesta de otra persona también es una buena idea –

+1

@HamzehSoboh done. Gracias por la corrección :-) –

Cuestiones relacionadas