2011-12-23 12 views
5

Aquí está la versión simplificada de mi LayerList. Tiene un mapa de bits en un elemento para evitar escalas. Quiero cambiar el dibujo de este mapa de bits programáticamente. ¿Hay alguna forma de hacer esto?Cambiar mapa de bits extraíble en LayerListDrawable

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:id="@+id/item" 
     android:left="165dp" 
     android:top="245dp" > 
     <bitmap 
      android:id="@+id/bitmap" 
      android:src="@drawable/tag_de_01" 
      android:gravity="top|left" /> 
    </item> 

</layer-list> 

He intentado lo siguiente sin éxito:

Resources res = getResources(); 
LayerDrawable layerDrawable = (LayerDrawable) res.getDrawable(R.drawable.layer_list_drawable); 

Drawable newDrawable = (Drawable)res.getDrawable(R.drawable.something); 

// works, but scales the image because the drawable of the item is set instead the one of the bitmap 
layerDrawable.setDrawableByLayerId(R.id.item, newDrawable); 

// doesn't work at all 
layerDrawable.setDrawableByLayerId(R.id.bitmap, newDrawable); 
+2

Tengo el mismo problema. ¿Alguien puede ayudar? – Lobo

+1

¿Pudo encontrar una respuesta? –

Respuesta

0

moldeada newDrawable a BitmapDrawable (asumiendo que es uno, por supuesto), y se puede utilizar BitmapDrawable.setGravity la misma manera que utiliza el androide : atributo de gravedad en su xml para evitar escalar

+1

¿Qué sucede si solo quiero cambiar el atributo SRC ?, ¿Cómo cambiaría el atributo SRC del mapa de bits R.id.bitmap? – Lobo

+0

en realidad es un proceso más largo para hacerlo de esa manera, ya que no puede simplemente actualizar el atributo de origen. el atributo src en xml es simplemente una conveniencia ... en todos los casos debe decodificar el recurso en un nuevo objeto Bitmap y envolverlo en Drawable, ya sea que lo haga el framework o usted mismo lo escriba. eche un vistazo a los documentos de clase LayerDrawable y BitmapDrawable para ver qué funcionalidad está disponible para usted. – Rich

Cuestiones relacionadas