Я создал список слоев, состоящий из 3 растровых рисунков в формате xml. Когда я пытаюсь получить этот объект в коде 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>
Я объявил атрибут с именем iconBar внутри стилизованного XML-файла Input_Field, который должен содержать ссылку на вышеупомянутый LayerDrawable, и вот стилизованный XML-код Input_Field:
<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
Может ли кто-нибудь помочь мне понять это странное поведение?