2015-07-28 9 views
5

Ho riscontrato uno strano effetto relativo ai drawable di forma con gli attributi di supporto della lib. Ho il seguente codice, che si blocca ogni volta durante l'inflazione.Libreria di supporto Android v4: 22+ crashing pre Lollipop su attr/in drawable

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
<size android:width="26dp" android:height="26dp"/> 
<solid android:color="?attr/colorPrimary"/> 

Nota ho usato? Attr/colorPrimary come il colore. Se uso

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
<size android:width="26dp" android:height="26dp"/> 
<solid android:color="@color/primary"/> 

Si sta lavorando bene, senza alcun crash. Il problema riguarda solo i dispositivi con versione inferiore di Android rispetto a 5.0. Sto usando il seguente supporto lib

compile 'com.android.support:support-v4:22.2.1' 

Qualcuno ha trovato il motivo per cui questo sta accadendo? Si tratta di un bug nella libreria di supporto?

+0

Sono di fronte allo stesso problema. Hai trovato qualche soluzione ?? – ch3tanz

risposta

2

<solid android:color="?attr/colorPrimary"/> Punti a un colore privato (non era pubblico) nel codice Android, forse non esiste in alcune API.
Mentre <solid android:color="@color/primary"/> punterà ad un colore nel progetto, forse hai un nome di colore primary solo nella cartella valori-V21 in modo che sia solo schiantarsi nelle versioni inferiore a 5,0
Credo che si dovrebbe provare a utilizzare questo: <solid android:color="@android:attr/colorPrimary"/> per assicurarsi che il attributo esiste.
Spero che questo aiuti.

+3

Comunque, se uso? Attr/colorPrimary nei file XML di layout, funziona perfettamente. Il problema si verifica solo quando si definisce all'interno di Drawable . Gli attributi dalla libreria di supporto saranno visibili nell'intero progetto quando lo includo come dipendenza. Ho sbagliato? – Michal