XmlPullParserException:无效的可绘制标记向量

Mal*_*ngh 15 compatibility android vector gradle android-ndk

我正在使用NDK支持并收到此错误:

摇篮:

分配: gradle-2.5-all

构建工具: 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>
Run Code Online (Sandbox Code Playgroud)

警告:

vector需要API级别21(当前min为13)或使用Android Gradle插件1.4或更高版本构建

例外:

  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)
Run Code Online (Sandbox Code Playgroud)

小智 25

在前Lollipop设备上,您需要使用VectorDrawableCompat从资源中获取矢量.

 someVectorDrawable = VectorDrawableCompat.create(context.getResources(), R.drawable.[some res id], null);
Run Code Online (Sandbox Code Playgroud)

然后,您可以设置ImageView的背景.


Bri*_*gun 5

我找到了一个相当有趣的解决方法。如果您将背景设置为包含 xml drawable 的 drawable 文件,那么异常/崩溃就会消失。

因此,创建一个具有以下内容的可绘制文件:

<selector
     xmlns:android="http://schemas.android.com/apk/res/android">
<item
     android:drawable="@drawable/your_image_here.xml" />
</selector>
Run Code Online (Sandbox Code Playgroud)

并将这个可绘制文件的名称作为背景...