Vector de etiqueta dibujable no válido

Im que intentaba utilizar el vector drawables en dispositivos del pre lollipop. Hice todo según lo indicado aquí pero todavía consigo este choque.

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"/> 

También intenté app:srcCompat y en ese caso, drawable apenas no muestre.

Me enfrenté a un problema similar y la respuesta de @ pedja es útil. De manera más general, como se menciona en el artículo de Chris Banes sobre compatibles con dibujos vectoriales , la biblioteca de soporte funciona inyectando su versión de ImageView sobre el sistema uno en pre-L a través de algunos ganchos. Esto implica implícitamente que se utilicen las versiones AppCompat de clases, como AppCompatActivity .

En mi caso, el vector dibujable se usa en una vista de tipo tostada independiente sin una actividad asociada, usando el contexto de la Aplicación. AppCompatImageView usando AppCompatImageView en la definición de diseño xml directamente, es decir algo como

 <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"/> 

Por lo tanto no hay necesidad de la magia "gancho" mecanismo. Como probado esto también funciona con la clase de Activity sin necesidad de utilizar AppCompatActivity . Todo lo anterior se realizó sin actualizar a 23.2.1, que abordó un problema diferente.

Este código va a funcionar con vector si está usando
VectorDrawables.useSupportLibrary = true

Y cambiar android:src a la app:srcCompat .

Por ejemplo,

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

a

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

El problema era que mi actividad no era extender AppCompatActivity pero Activity regular.

Esto no se especifica en ninguna documentación / ejemplo para el soporte vectorial desplegables

Tengo este problema también al cargar los vectores de un selector en dispositivos pre-lollipop:

Use AppCompatDelegate.setCompatVectorFromResourcesEnabled (true) en su método onCreate:

Establece si se pueden utilizar elementos vectoriales extraíbles en plataformas anteriores (<API 21) en los recursos android.graphics.drawable.DrawableContainer. Cuando está habilitado, AppCompat puede interceptar alguna inflación desplegable del marco, lo que permite la inflación implícita de elementos vectoriales extraíbles dentro de los recursos android.graphics.drawable.DrawableContainer.

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

Funciona con 23.2.0 o 23.4.0, no con 23.3.0. En serio Google!

En primer lugar, esta funcionalidad se lanzó originalmente en 23.2.0, pero luego encontramos algunos problemas de uso de memoria y configuración de actualización por lo que se eliminó en 23.3.0. En 23.4.0 (técnicamente una versión de corrección) hemos re-añadido la misma funcionalidad, pero detrás de una bandera que debe habilitar manualmente.

Ref: https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88#.waicp19gh

También es necesario incluir la nueva biblioteca de soporte de vectores:

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

Encontré este problema en code.google.

Parece ser la misma cuestión que usted. ¿Ayuda esto? https://code.google.com/p/android/issues/detail?id=201843

Esto es soporte-v4, appcompat-v7 bug de la biblioteca v23.2.0 aparece en la API 19. @tim proporciona un enlace a este problema de error.

Puede actualizar a la nueva versión de la biblioteca 23.2.1 y el error se soluciona ahora.

Las respuestas que se dan aquí son ignorar una situación cuando se desea añadir un drawable a una vista de texto porque da el mismo error. En mi caso tuve

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

No pude encontrar la forma de resolver esto, así que eliminé esa línea del código xml y ponerlo en mi código java de esta manera

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

Aclaración para el código,

  1. Obtener el vector dibujable de la carpeta drawables mediante AppCompatDrawableManager

  2. Establecer el dibujable que acabamos de obtener como la izquierda dibujable en nuestro textview

Si te ves usando <android.support.v7.widget.AppCompatImageView al cargar un vector dibujable, podría ser una mejor idea extender AppCompatActivity lugar de Activity y volver a usar regular <ImageView...app:srcCompat="@drawable/...

  • VectorDrawable causas NumberFormatException
  • Cómo centrar el vector dibujable en la lista de capas sin escala
  • VectorDrawable - ¿está disponible de alguna manera para versiones pre-Lollipop de Android?
  • Coracteres corrompidos o desaparecidos después de ejecutar Proguard
  • Cómo crear Android VectorDrawables de Illustrator (u otra herramienta similar)?
  • Android: Cómo establecer el color de trazo para el vector dibujable mediante programación
  • ¿Podemos usar VectorDrawable o VectorXML como iconos para notificaciones push en android?
  • Android Vector Drawable accidente
  • ¿Cómo puedo utilizar vectorDrawable como icono para notificaciones push mediante Android Support Library 23.2? setSmallIcon da error
  • AppCompat 23.2 utiliza VectorDrawableCompat con RemoteViews (AppWidget) en la API <21
  • Cambiar el color de relleno del elemento vectorial en Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.