2012-03-20 26 views
22

我有這個問題,查看跟蹤堆棧:使用繪圖資源

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> 
+0

THX。但嗯。我該做什麼?我需要放置一個可繪製的XML資源高於另一個,但我的資源正在擴展...我必須做什麼來避免縮放xml可繪製資源?和沒有重力參數... – 2012-03-20 15:10:56

回答

22

你不能有一個XML繪製作爲源位圖。因爲例如如果可能的話,那麼它可能通過調用xml給自己錯誤地創建一個黑洞。

允許假設你繪製一個xml其具有位圖衛生組織源是可拉伸。但是在可繪製的B中,它具有可繪製的源位圖A。這將創建一個無法解決的循環。這就是爲什麼你需要提供圖像源的位圖,以避免任何混淆

+0

感謝這個Waqas,我有完全相同的問題(但沒有合併,因爲這被標記爲回答) - 但我要求的解決方案:http:// stackoverflow。 com/questions/10055892/prevent-shapes-scaling-in-a-layeredlist-with-or-without-using-bitmap – ataulm 2012-04-07 16:42:13

+10

@waqaslam,你的回答是正確的:你不能有一個可繪製的XML作爲位圖源標籤。我感到困惑的是你的解釋:當引用XML資源時,循環引用可能發生在任何上下文中。在我看來,這是框架 – 2014-03-05 14:45:15

31

爲了避免錯誤:二進制XML文件行#XXX:需要一個有效的src屬性

層列表內,使用:

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

代替:

<item> 
    <bitmap android:src="@drawable/image"/> 
</item> 
+6

中的設計約束,但如果我需要tileMode呢? – Gudin 2016-02-16 22:29:16

+7

是的,如果我需要tileMode,tint或位圖上的其他許多屬性...? – 2016-03-30 13:52:44

+0

這對我來說是真正的解決方案! – 2017-11-23 07:33:48