Использование доступных ресурсов - PullRequest
49 голосов
/ 20 марта 2012

У меня есть эта проблема, смотрите стек трассировки:

E/AndroidRuntime(2410): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #5: <bitmap> requires a valid src attribute

Мой XML-файл выглядит так:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <bitmap android:src="@drawable/btn_1"/>
    </item>
</layer-list>

btn_1 - это еще один XML-файл в доступных для рисования ресурсах. Когда я использую изображение (*. Png) вместо xml drawable, это нормально.

Могу ли я использовать нарисованный ресурс как src для растрового изображения? На всякий случай вот мой файл btn_1.xml. Не работает, даже если в файле btn_1 нет элементов.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/btn_arrow_bg_red"/>
<item>
    <bitmap
        android:gravity="center"
        android:src="@drawable/btn_arrow_white" />
</item>
</layer-list>

Ответы [ 2 ]

72 голосов
/ 27 июня 2014

Чтобы избежать ошибки: строка двоичного файла XML #XXX: требуется действительный атрибут src

внутри списка слоев, используйте:

<item android:drawable="@drawable/image" />

вместо:

<item>
  <bitmap android:src="@drawable/image"/>
</item>
37 голосов
/ 20 марта 2012

Нельзя использовать xml drawable в качестве источника для растрового изображения. Потому что, например, если бы это было возможно, то он мог бы по ошибке создать черную дыру, вызвав к себе xml.

Предположим, у вас есть xml drawable A , у которого есть растровое изображение, чей источник доступен для рисования B . Но в drawable B он имеет растровое изображение, источник которого можно рисовать A . Это создаст круговую петлю, которая не может быть решена. Вот почему вам нужно предоставить изображение в качестве источника для растрового изображения, чтобы избежать путаницы

...