AndroidStudio 3.0/Android Gradle plugin 3.0
<vector>
<path Android:fillColor="@color/image_button_disabled"/>
</vector>
Je reçois cette erreur:
les références à d'autres ressources ne sont pas prises en charge par la génération de PNG au moment de la construction
Sera-t-il possible de le résoudre ou est-ce une solution obsolète?
Dans votre application, build.gradle
, ajoutez la ligne suivante:
defaultConfig{
vectorDrawables.useSupportLibrary = true
}
Voir Développeurs Android: Solution de compatibilité ascendante Vector Drawables pour plus de détails.
vous devez utiliser directement le code hexadécimal sans faire référence à une ressource.
<vector
<path
Android:fillColor="#FFF"/></vector>
Un peu plus de contexte pour cette erreur:
Pour la bibliothèque de support, ajoutez une déclaration à votre fichier build.gradle:
Android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
compile 'com.Android.support:appcompat-v7:23.2.0'
}
Si votre minSdkVersion est 21, vous pouvez désactiver la génération de PNG en ajoutant cette ligne:
// set to an empty list to disable the feature
vectorDrawables.generatedDensities = []
La suppression de cette ligne générera toujours les PNG.
Ne pas utiliser l'attribut colorReference at fillColor dans le vecteur pouvant être dessiné
utiliser comme ça
<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:width="24dp"
Android:height="24dp"
Android:viewportWidth="24.0"
Android:viewportHeight="24.0">
<path
Android:fillColor="#1abc9c"
Android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>
au lieu de cela
<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:width="24dp"
Android:height="24dp"
Android:viewportWidth="24.0"
Android:viewportHeight="24.0">
<path
Android:fillColor="@color/colorPrimary"
Android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>
J'ai pu contourner ce problème en procédant comme suit:
De cette façon, le compilateur fonctionnera
Pour ajouter @ mwa91répondre .
Si vous avez besoin d'une thématisation dynamique de dessin, mais que vous n'avez pas le temps de mettre à jour vos mises en page et d'aller avec @ mwa91answer et de changer tous les attributs Android:src="@drawable/..."
en app:srcCompat="@drawable/..."
, vous pouvez toujours utiliser la valeur de couleur hex drawable et plus tard teinte le dessinable dans ImageView:
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/your_drawable"
Android:tint="@color/image_button_disabled"
/>
Je pense que vous utilisez Android:fillColor="@color/image_button_disabled"
ce code pour le dessin vectoriel.
// image_button_disabled.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:color="@color/circular_image_color_pressed" Android:state_pressed="true" />
<item Android:color="@color/circular_image_color_normal" />
</selector>
Ce n'est pas pris en charge.
Il suffit de le remplacer par Android:fillColor="#c4ca5e"