2012-01-21 10 views
21

que tratar de hacer una costumbre Drawable mediante el uso de atributos, pero tengo un error de infladoEl uso de atributos para modificar un elemento estirable de color

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 

Mi action_bar_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 
    <gradient 
     android:angle="90" 
     android:endColor="?attr/ActionBarEndColor" 
     android:startColor="?attr/ActionBarStartColor" 
    /> 
</shape> 

Mi attr.xml

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

Mi themes.xml

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

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

No entiendo por qué, mi atributo es una referencia o un color, si "fuerzo" el color en themes.xml, tampoco funciona.

¿Alguien puede ayudar?

He encontrado this question pero no resuelve mi problema.

+0

La única solución He encontrado, es para usar múltiples archivos dibujables con el color elegido y hacer la referencia en el archivo de tema. – Ahmet

+1

Este problema se resolvió en la vista previa de Android L, como se especifica aquí: https://code.google.com/p/android/issues/detail?id=26251 –

+0

Encontré esto arreglado en Lollipop, pero aún no funciona Kitkat y menos –

Respuesta

12

Buenas noticias a todos! Al iniciar Lollipop (21) puede usar atributos para hacer referencia a cosas como colores, p. Ej. ?attr/colorPrimary.

Respuesta original:

Por lo que sabe que no puede hacer referencia a los atributos de estilo de dibujables, no pude encontrar un uso como el de recursos de la plataforma Android ($ANDROID_HOME/platforms/android-*/data/res/), todo lo que veo es que cada dibujable incluso para gradiente los dibujables se definen en su lugar o simplemente hacen referencia a otros elementos dibujables, como los dibujables en color.

Aquí es un informe de error relacionado correspondiente a este (STAR): I

https://code.google.com/p/android/issues/detail?id=26251

Puede solucionar esto mediante el uso dibujables XML independientes, como se explica en:

https://stackoverflow.com/a/13471695/172670

+0

Desafortunadamente todavía se colgará en un valor inferior a API 21. (Por lo tanto, en los dispositivos que ejecutan KitKat o inferior aún se bloqueará). –

Cuestiones relacionadas