2015-12-29 15 views
13

Tôi đang sử dụng hỗ trợ NDK và nhận được lỗi này:XmlPullParserException: không hợp lệ drawable thẻ vector

Gradle:

phân phối: gradle-2.5-all

công cụ xây dựng: 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> 

Cảnh báo:

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

Ngoại lệ:

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

bạn đã khắc phục được sự cố chưa? – bendaf

+1

@bendaf yes. hãy kiểm tra câu trả lời được chấp nhận. –

Trả lời

17

On pre-Lollipop thiết bị mà bạn cần phải sử dụng VectorDrawableCompat để có được vector từ tài nguyên.

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

Sau đó, bạn có thể đặt nền của ImageView.

+0

Tôi gặp lỗi này với buildToolsVersion "25.0.3" cho api 19 khi sử dụng drawableLeft trên nút. Cách giải quyết này là cách tiếp cận duy nhất có hiệu quả đối với tôi. – Aleris

+0

Điều này đã cứu ngày của tôi! Cách giải quyết duy nhất. Tôi đã thử với các công cụ xây dựng 26.0.0 và tôi đã nhận được cùng một vấn đề. – AndroidRuntimeException

+0

Bất kỳ ý tưởng làm thế nào để giải quyết điều này khi bao gồm thông qua xml cho một mục trình đơn ('android: biểu tượng = @ drawable/icon_name')? –

2

Tôi đã tìm được cách giải quyết khá thú vị cho vấn đề này. Nếu bạn đặt nền cho tệp có thể kéo có chứa xml drawable thì ngoại lệ/lỗi sẽ biến mất.

Vì vậy, tạo một file drawable đã điều sau đây:

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

và đặt tên của tập tin drawable này như nền ...

0

Nếu nó không hoạt động chỉ dành riêng cho Pre-Lollipop, thêm hoạt động này vào Hoạt động

static { 
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
} 
Các vấn đề liên quan