2010-03-30 9 views
14

que tienen un diseño con un ImageView define como:Cómo usar ColorDrawable con ImageView?

<ImageView 
    android:layout_width="45dip" 
    android:layout_height="45dip" 
    android:scaleType="fitXY" /> 

ahora sólo desea establecer la imageview a ser de un color estático, como el rojo o verde. Lo estoy intentando:

ColorDrawable cd = new ColorDrawable("FF0000"); 
cd.setAlpha(255); 
ImageView iv = ...; 
iv.setImageDrawable(cd); 

la vista de la imagen está vacía, sin color. Sin embargo, el espacio de 45dips se está agotando. ¿Qué debo hacer para obtener el color?

Gracias

Respuesta

26

Mirando el constructor para ColorDrawable no veo una versión que lleva una cadena como en su ejemplo. Veo uno que toma un int. Intente esto:

ColorDrawable cd = new ColorDrawable(0xffff0000); 

Observe que utilicé 8 dígitos hexadecimales, no 6 como en su ejemplo. Esto establece el valor alfa también.

Editar: Mirando hacia atrás en algunos de mi propio código donde yo he hecho algo similar, siempre he usado setBackgroundDrawable() en lugar de setImageDrawable() para inicializar un ImageView con un color sólido. No estoy seguro de si eso marcaría la diferencia.

+0

Gracias a que el color int que estaba suministrando estaba desactivado, utilicé Color.parseColor() y ahora funciona. – user246114

+5

si desea utilizar un selector con colores (no dibujables) programaticamente puede usar: 'ColorDrawable cd = new ColorDrawable (Color.parseColor (" # FFEDCACA "));' – Houcine

+0

para cualquiera que busque establecer un color liso a dibujable (como yo), es mucho más fácil de usar imageView.setBackgroundColor() –

Cuestiones relacionadas