2015-12-29 52 views
13

Sto usando il supporto NDK e questo errore:XmlPullParserException: non valida drawable tag vettore

Gradle:

Distribuzione: gradle-2.5-all

strumento di compilazione: gradle-experimental:0.2.1

XML:

<vector android:height="24dp" android:viewportHeight="125.0" 
android:viewportWidth="100.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> 
<path android:fillColor="#FF000000" android:pathData="M97.01,-2.98,-3C47.02,95.35"/> 
</vector> 

Attenzione:

vector requires API level 21 (current min is 13) or building with Android Gradle plugin 1.4 or higher

Eccezione:

FATAL EXCEPTION: main 
android.content.res.Resources$NotFoundException: File res/drawable/accelerometer.xml from drawable resource ID #0x7f020045 
at android.content.res.Resources.loadDrawable(Resources.java:2842) 
at android.content.res.Resources.getDrawable(Resources.java:1521) 

... 
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector 
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:917) 
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:858) 
+0

https://github.com/wnafee/vector-compat/issues/15 –

+0

hai risolto il problema? – bendaf

+1

@bendaf sì. si prega di controllare la risposta accettata. –

risposta

17

Sui dispositivi pre-Lollipop è necessario utilizzare VectorDrawableCompat per ottenere il vostro vettore di risorse.

someVectorDrawable = VectorDrawableCompat.create(context.getResources(), R.drawable.[some res id], null); 

Quindi è possibile impostare lo sfondo di ImageView.

+0

Ricevo questo errore con buildToolsVersion "25.0.3" per api 19 quando si utilizza drawableLeft su un pulsante. Questa soluzione alternativa è l'unico approccio che ha funzionato per me. – Aleris

+0

Questo mi ha salvato la giornata! L'unica soluzione. Ho provato con gli strumenti di compilazione 26.0.0 e ho avuto lo stesso problema. – AndroidRuntimeException

+0

Qualche idea su come risolvere questo problema se incluso tramite xml per una voce di menu ('android: icon = @ drawable/icon_name')? –

2

Ho trovato una soluzione abbastanza interessante a questo. Se si imposta lo sfondo su un file drawable che contiene il drawable xml, l'eccezione/crash scompare.

Quindi creare un file disegnabile che ha il seguente:

<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:drawable="@drawable/your_image_here.xml" /> 
</selector> 

e mettere il nome di questo file drawable come sfondo ...

0

Se non funziona solo per il pre-Lollipop, aggiungere questo nella vostra attività

static { 
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
}