web-dev-qa-db-ja.com

XmlPullParserException:無効な描画可能なタグベクトル

NDKサポートを使用していますが、次のエラーが発生します:

Gradle:

分布: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>

警告:

ベクターにはAPIレベル21(現在の最小値は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)
16
Malwinder Singh

Lollipopより前のデバイスでは、VectorDrawableCompatを使用してリソースからベクターを取得する必要があります。

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

次に、ImageViewの背景を設定できます。

23
Tyler Howes

これに対するかなり興味深い回避策を見つけました。 xmlドローアブルを含むドローアブルファイルに背景を設定すると、例外/クラッシュはなくなります。

したがって、次のようなドローアブルファイルを作成します。

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

このドローアブルファイルの名前を背景として...

4
Brian Begun

プレロリポップだけで機能しない場合は、これをアクティビティに追加してください

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
3
Mladen Rakonjac