android – Using attribute to modify a drawable element color-ThrowExceptions

Exception or error:

I try to make a custom Drawable by using attribute but I have an inflating error

01-21 11:01:06.171: E/AndroidRuntime(13695): Caused by: android.content.res.Resources$NotFoundException: 
File res/drawable/action_bar_background.xml from drawable resource ID #0x7f020000

My action_bar_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="" 
 android:shape="rectangle" >

My attr.xml

<?xml version="1.0" encoding="utf-8"?>
     <attr name="ActionBarStartColor" format="reference|color" />
     <attr name="ActionBarEndColor" format="reference|color" />

My themes.xml

<?xml version="1.0" encoding="utf-8"?>
    <style name="Theme.Theme1" parent="@style/Theme.GreenDroid.Light.NoTitleBar">
        <item name="ActionBarStartColor">@color/greyDark</item>
        <item name="ActionBarEndColor">@color/greyLight</item>

    <style name="Theme.Theme2" parent="@style/Theme.GreenDroid.Light.NoTitleBar">
        <item name="ActionBarStartColor">@color/myRed</item>
        <item name="ActionBarEndColor">@color/myWhite</item>

I don’t undestand why, my attribute is a reference or a color, if I “force” the color in themes.xml, it don’t work too.

Can anybody help?

I’ve found this question but it’s not resolve my problem.

How to solve:

Good news everyone! Starting Lollipop (21) you can use attributes to reference stuff like colors e.g. ?attr/colorPrimary.

Original answer:

As far I know you cannot reference style attributes from drawables, I couldn’t find an usage like that in Android platform resources ($ANDROID_HOME/platforms/android-*/data/res/), all I see is that every drawable even for gradient drawables are defined in place or they just reference other drawables like color drawables.

Here is a related bug report for this (star it):

You can workaround this by using separate xml drawables like explained at:

Leave a Reply

Your email address will not be published. Required fields are marked *