我有以下内容LayerDrawable
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/image_source"
android:bottom="6dp"
android:drawable="@drawable/default"
android:left="14dp"
android:right="14dp"
android:top="6dp">
</item>
<item android:drawable="@drawable/metaphor_photo_portrait"/>
</layer-list>
我需要能够@+id/image_source
从代码中动态替换图像。我成功地在 Honeycomb+ 设备上使用:
mLayerDrawable.setDrawableByLayerId(R.id.image_source, drawable);
mLayerDrawable.invalidateSelf();
但是,这在 Gingerbread 设备上不起作用,因为 Gingerbread 设备(链接 1、链接 2setDrawableByLayerId
)不稳定。建议我从头开始构建。我开始这样做,目前面临设置第一层的问题。LayerDrawable
intristicInset
我尝试使用
mLayerDrawable.setLayerInset(0, dp14, dp6, dp14, dp6);
dpxx
我自己计算的常数在哪里。但是,这种方法似乎也不适用于 Gingerbread(链接 1)。
因此,我决定尝试另一种方式 - 设置我在第一层设置的可绘制对象的重新角的边界:
drawable.setBounds(dp14, dp6, dp90 - dp14, dp90 - dp6);
完美,但是似乎LayerDrawable
忽略了图层上的边界设置(链接 1)
现在建议我使用两个图像视图的组合。但是我LayerDrawable
是其中的一部分,LevelListDrawable
我认为我不能在其中包含布局。
总而言之,这让我无法以LayerDrawable
任何方式在蜂窝设备之前的设备上修改我的内容。任何关于我应该如何进行的建议都将不胜感激!