我在 xml 中创建了一个可绘制 3 个位图可绘制对象的图层列表。当我尝试在 java 代码中检索该可绘制对象时,我收到一个BitmapDrawable
对象,而不是一个LayerDrawable
对象。
这是我的图层列表可绘制 XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:width="24dp" android:height="24dp" android:id="@+id/a">
<bitmap android:src="@drawable/add_to_list" />
</item>
<item android:width="24dp" android:height="24dp" android:id="@+id/b">
<bitmap android:src="@drawable/refresh" />
</item>
<item android:width="24dp" android:height="24dp" android:id="@+id/c">
<bitmap android:src="@drawable/trash" />
</item>
</layer-list>
我在“Input_Field styleable xml”中声明了一个名为 iconBar 的属性,它应该包含对上述 LayerDrawable 的引用,这里是“Input_Field styleable xml”:
<resources>
<declare-styleable name="InputField">
<attr name="iconBar" format="reference" />
</declare-styleable>
</resources>
这是视图的 xml 代码,InputField
它的属性 iconBar 持有对图层列表可绘制 iconbar_drawable 的引用:
<com.example.asuss.calcuroid.CustomViews_ViewGroups.CustomViews.InputField
appx:iconBar="@drawable/iconbar_drawable"/>
我的java代码:
final TypedArray a = getContext().obtainStyledAttributes(
attrs, R.styleable.InputField, defStyle, 0);
if(a.hasValue(R.styleable.InputField_IconsArray))
{
LayerDrawable iconBar = (LayerDrawable) a.getDrawable(R.styleable.InputField_iconBar);
}
运行应用程序后,我收到以下运行时异常
java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable cannot be cast to android.graphics.drawable.LayerDrawable
谁能帮我理解这种奇怪的行为?