2011-12-23 14 views
5

İşte LayerList'imin basitleştirilmiş hali. Ölçeklemeyi önlemek için bir öğede bitmap vardır. Bu bitmapi çizilebilir şekilde programlı olarak değiştirmek istiyorum. Bunu yapmanın bir yolu var mı? Bitmap'i Değiştir LayerListDrawable'da Çizilebilir

<?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> 

Ben başarılı olamadı aşağıdaki çalıştı: BitmapDrawable için

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

Ben de aynı sorun var. Birisi yardım edebilir mi? – Lobo

+1

Bir cevap bulabildiniz mi? –

cevap

0

Cast newDrawable (tabii ki, biri olduğunu varsayarak) ve BitmapDrawable.setGravity Eğer android kullandığınız şekilde kullanabilirsiniz : ölçekleme önlemek için xml yerçekimi özniteliği

+1

Sadece SRC özniteliğini değiştirmek istiyorsam ?, R.id.bitmap bitmap'in SRC özniteliğini nasıl değiştirirsiniz? – Lobo

+0

aslında kaynak özelliğini güncelleyemediğinizden bu şekilde yapmak için daha uzun bir süreç. xml'deki src özniteliği sadece bir kolaylıktır ... her durumda, yeni bir Bitmap nesnesine kaynağın kodunu çözmeniz ve bunun Çerçeve tarafından sizin için yapılıp yapılmadığı veya kodu kendiniz yazıp yazamayacağı gibi bir Drawable içinde sarmanız gerekir. Hangi işlevleri kullanabileceğinizi görmek için LayerDrawable ve BitmapDrawable sınıf belgelerine bakın. – Rich

İlgili konular