Недопустимый вектор тегов

Я пытаюсь использовать векторные чертежи на устройствах с предварительным леденец. Я сделал все, как указано здесь, но я все еще получаю этот крах.

build.gradle:

buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.0.0-beta6' } } apply plugin: 'com.android.application' repositories { maven { url 'http://maven.android-forever.com' } jcenter() } android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.test.app" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" vectorDrawables.useSupportLibrary = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.android.support:design:23.2.0' compile "de.greenrobot:eventbus:2.4.0" compile 'de.greenrobot:greendao:2.1.0' compile "com.af:android-utility:1.0.0.9" compile project(':volleyplus') compile project (':libvlc') } 

triangle.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/triangle_v"/> </selector> 

triangle_v.xml

 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="100dp" android:width="100dp" android:viewportHeight="100" android:viewportWidth="100"> <path android:name="triangle" android:fillColor="#FF0000" android:pathData="m 50,0 l 50,100 -100,0 z"/> </vector> 

layout.xml

 <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/triangle"/> 

Я также попробовал app:srcCompat и в этом случае выталкиваемые просто не показывают.

Solutions Collecting From Web of "Недопустимый вектор тегов"

Я столкнулся с подобной проблемой, и собственный ответ @ pedja полезен. В более общем плане, как упоминалось в статье Криса Банеса об векторной совместимости , библиотека поддержки работает, вводя свою версию ImageView поверх системы на пре-L через некоторые перехватчики. Для этого подразумевается использование классов классов AppCompatActivity , таких как AppCompatActivity .

В моем случае векторный drawable используется в автономном тостевидном представлении без связанного действия с использованием контекста приложения. Я закончил использование AppCompatImageView в определении макета xml напрямую, т.е. что-то вроде

 <android.support.v7.widget.AppCompatImageView android:id="@+id/some_id" android:layout_width="24dp" android:layout_height="24dp" android:src="@drawable/selector_referencing_vector_drawable"/> 

Таким образом, нет необходимости в волшебном механизме «крючка». Как проверено, это также работает с классом Activity без необходимости использования AppCompatActivity . Все вышеизложенное было выполнено без обновления до 23.2.1, что касалось другой проблемы.

Этот код будет работать с вектором, если вы используете
VectorDrawables.useSupportLibrary = true

И измените android:src в app:srcCompat .

Например,

 <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/triangle"/> 

в

 <ImageView android:layout_width="match_parent" android:layout_height="match_parent" app:srcCompat="@drawable/triangle"/> 

Проблема заключалась в том, что моя активность не распространялась на AppCompatActivity а на обычную Activity .

Это не указывается ни в одной документации / примере для векторных векторов поддержки

Эта проблема возникла и при загрузке векторов из селектора на устройствах с предварительным леоптипом:

Используйте метод AppCompatDelegate.setCompatVectorFromResourcesEnabled (true) в методе onCreate:

Устанавливает, могут ли векторные чертежи на старых платформах (<API 21) использоваться в ресурсах android.graphics.drawable.DrawableContainer. Когда включено, AppCompat может перехватить некоторую доходную инфляцию из фреймворка, что обеспечивает неявную инфляцию векторных ресурсов в ресурсах android.graphics.drawable.DrawableContainer.

 protected final void onCreate(Bundle savedInstanceState) { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); super.onCreate(savedInstanceState); ... 

Он работает с 23.2.0 или 23.4.0, а не 23.3.0. Серьезно Google!

Во-первых, эта функциональность была первоначально выпущена в 23.2.0, но затем мы обнаружили некоторые проблемы с использованием памяти и обновления конфигурации, поэтому мы удалили ее в 23.3.0. В 23.4.0 (технически релиз исправления) мы повторно добавили ту же функциональность, но за флагом, который необходимо включить вручную.

Ссылка: https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88#.waicp19gh

Вам также необходимо включить новую библиотеку поддержки векторов:

 compile 'com.android.support:support-vector-drawable:23.2.0' 

Я нашел эту проблему на code.google.

Это, похоже, та же проблема, что и вы. Помогает ли это? https://code.google.com/p/android/issues/detail?id=201843

Это поддержка-v4, ошибка библиотеки appcompat-v7 v23.2.0, которая появляется в API 19. @tim предоставляет ссылку на эту проблему.

Вы можете перейти на новую версию библиотеки 23.2.1, и теперь исправлена ​​ошибка.

Ответы, приведенные здесь, игнорируют ситуацию, когда вы хотите добавить переносимое текстовое представление, потому что оно дает ту же ошибку. В моем случае я

 <TextView .... android:drawableLeft="some_vectore_drawable" /> 

Я не мог найти, как это решить, поэтому я удалил эту строку из кода xml и поместил ее в свой код Java таким образом

 Drawable somevectordrable = AppCompatDrawableManager.get().getDrawable(context, R.drawable.somevectordrawable); mytextview.setCompoundDrawableWithIntrinsicBounds(somevectordrable, null, null, null); 

Разъяснение кода,

  1. Получите вектор, который можно извлечь из папки drawables с помощью AppCompatDrawableManager

  2. Установите выталкиваемый мы только что получили, как левый, нарисованный на нашем текстовом изображении

Если вы видите, что используете <android.support.v7.widget.AppCompatImageView при загрузке переносимого вектора, возможно, лучше было бы расширить AppCompatActivity вместо Activity и вернуться к использованию обычного <ImageView...app:srcCompat="@drawable/...