2014-11-16 9 views
6

Nella mia app ho definire gli attributi di colore che ho impostato in un tema personalizzato:Android xml drawable Impossibile convertire ad eccezione del colore per API 10

res/valori/attrs.xml

<resources> 
    <attr name="bbColorPrimary" format="color|reference" /> 
</resources> 

res /values/colors.xml

<resources> 
    <color name="white">#ffffff</color> 
</resources> 

ris/valori/style.xml

<style name="MyStyle" parent="@style/Theme.AppCompat.NoActionBar"> 
    <item name="bbColorPrimary">@color/white</item> 
</style> 

res/drawable/background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_pressed="true"> 
     <shape> 
      <solid android:color="?attr/bbColorPrimary" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <solid android:color="@color/transparent" /> 
     </shape> 
    </item> 
</selector> 

res/drawable/background.xml è impostato come sfondo di alcuni pulsante. Arresto anomalo dell'applicazione durante il gonfiaggio del file res/drawable/background.xml, con la seguente eccezione:

... 
Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2 
      at android.content.res.TypedArray.getColor(TypedArray.java:326) 
      at android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:748) 
      at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787) 
      at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:172) 
.... 

Si lavora su livelli di API maggiori di 10. Se rimuovo il ?attr/bbColorPrimary che funziona bene, anche se molti altri ?attr/.. chiamate si trovano in altri file di risorse . Non sto usando nessuna cartella di risorse specifica per la versione.

Cosa sto facendo di sbagliato qui?

risposta

6

Ho trovato una risposta su SO, menzionando che ?attr/.. non sono supportati nei drawable xml. Vedi qui: https://stackoverflow.com/a/13471695/169748

A quanto pare questo è vero almeno per API < = 10.

+1

Anche con API = 16 Ho un incidente, API => 21 sono bene comunque. – Ruocco

+0

@Omcira grazie per averlo menzionato. Posso confermare anche con API = 15. –

+0

Anche con API 17, penso che il suo arresto anomalo in <21, perché nel mio dispositivo lecca-lecca funziona bene. –

Problemi correlati