2011-12-23 30 views
5

Đây là phiên bản đơn giản của Danh sách lớp của tôi. Nó có một bitmap trong một mục để ngăn chặn mở rộng quy mô. Tôi muốn thay đổi drawable của bitmap này lập trình. Có cách nào để làm việc này không?Thay đổi Bitmap Drawable trong 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> 

Tôi đã thử các sau đây mà không thành công:

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

Tôi có cùng một vấn đề. Ai đó có thể giúp đỡ? – Lobo

+1

Bạn có thể tìm ra câu trả lời không? –

Trả lời

0

Cast newDrawable để BitmapDrawable (giả định rằng nó là một, tất nhiên), và bạn có thể sử dụng BitmapDrawable.setGravity giống như cách bạn sử dụng android : thuộc tính trọng lực trong xml của bạn để ngăn chia tỷ lệ

+1

Điều gì xảy ra nếu tôi chỉ muốn thay đổi thuộc tính SRC ?, Bạn sẽ thay đổi thuộc tính SRC của bitmap R.id.bitmap như thế nào? – Lobo

+0

nó thực sự là một quá trình lâu hơn để làm điều đó theo cách đó vì bạn không thể chỉ cập nhật thuộc tính nguồn. thuộc tính src trong xml chỉ là một tiện ích ... trong mọi trường hợp bạn phải giải mã tài nguyên vào một đối tượng Bitmap mới và bọc nó trong một Drawable cho dù được thực hiện cho bạn bởi khung công tác hay bạn tự viết mã. hãy xem các tài liệu lớp LayerDrawable và BitmapDrawable để xem chức năng nào có sẵn cho bạn. – Rich

Các vấn đề liên quan