【问题标题】:Change Bitmap Drawable in LayerListDrawable在 LayerListDrawable 中更改 Bitmap Drawable
【发布时间】:2012-01-26 19:15:45
【问题描述】:

这是我的 LayerList 的简化版本。它在项目中有一个位图以防止缩放。我想以编程方式更改此位图的可绘制对象。有没有办法做到这一点?

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

我尝试了以下方法但没有成功:

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

【问题讨论】:

  • 我也有同样的问题。有人可以帮忙吗?
  • 你能想出答案吗?

标签: android bitmap drawable


【解决方案1】:

将 newDrawable 转换为 BitmapDrawable(当然,假设它是一个),并且您可以像在 xml 中使用 android:gravity 属性一样使用 BitmapDrawable.setGravity 来防止缩放

【讨论】:

  • 如果我只想更改SRC属性怎么办?,您将如何更改R.id.bitmap位图的SRC属性?
  • 这样做实际上是一个较长的过程,因为您不能只更新源属性。 xml 中的 src 属性只是一种方便...在所有情况下,您都必须将资源解码为新的 Bitmap 对象并将其包装在 Drawable 中,无论是由框架为您完成还是您自己编写代码。查看 LayerDrawable 和 BitmapDrawable 类文档,了解您可以使用哪些功能。
猜你喜欢
  • 2011-02-07
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
相关资源
最近更新 更多