2
votes

L'élément vectoriel donne l'erreur "currentColor" lorsque j'ai créé

J'ai téléchargé une icône svg à partir de font awesome pour une application sous Android, lorsque je crée un élément vectoriel, j'importe mon svg, mais lorsque je tente de compiler cela, donnez-moi l'erreur suivante

erreur: 'currentColor' est incompatible avec l'attribut fillColor (attr) couleur.

J'ai essayé de changer directement la couleur de remplissage, mais lorsque je compile l'application, cela refait le xml et remet le mot "couleur actuelle"

c'est le xml généré par l'actif vectoriel

<vector android:autoMirrored="true" android:height="512dp"
    android:viewportHeight="512" android:viewportWidth="448"
    android:width="448dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="currentColor" android:pathData="..."/>
</vector>

comment puis-je résoudre ce problème?


0 commentaires

3 Réponses :


0
votes

Je résous ce problème, je modifie simplement l'origine du svg avec un éditeur externe et je l'importe à nouveau


0 commentaires

2
votes

android: fillColor doit être une couleur (le courant est une chaîne)

Changer android: fillColor = "currentColor" pour colorer hex ex:

android:fillColor="?colorPrimary"

ou faire référence à colors.xml comme:

android:fillColor="@colors/colorPrimary"

ou d'une autre manière (si défini comme ci-dessous, la couleur changera par thème):

android:fillColor="#00FFFF" 


0 commentaires

1
votes

Les fichiers .svg téléchargés depuis font awesome ont la couleur définie sur "currentColor". Lors de la création de l'actif vectoriel, Android importe la couleur du fichier d'origine. Chaque fois qu'Android construit le projet, il s'assure que les deux fichiers correspondent et remplace toutes les incohérences entre les deux fichiers.

Par conséquent, pour changer la couleur dans le fichier de ressources .xml, vous devez changer la couleur de l'original fichier. Cela peut être fait en le modifiant avec une autre application. Ou plus simplement, vous pouvez ouvrir le fichier .svg dans un éditeur de texte et le modifier de cette façon.


Voici un exemple de fichier .svg téléchargé depuis font awesome. Pour l'utiliser comme élément vectoriel dans Android, remplacez simplement fill = "currentColor" par une chaîne de couleur hexadécimale valide, par exemple fill="#000000".

<svg aria-hidden="true"
     focusable="false"
     data-prefix="fab"
     data-icon="font-awesome-flag"
     class="svg-inline--fa fa-font-awesome-flag fa-w-14"
     role="img" xmlns="http://www.w3.org/2000/svg"
     viewBox="0 0 448 512">

    <path fill="currentColor"
          d="M444.373 359.424c0 7.168-6.144 10.24-13.312 13.312-28.672 12.288-59.392 23.552-92.16 23.552-46.08 0-67.584-28.672-122.88-28.672-39.936 0-81.92 14.336-115.712 29.696-2.048 1.024-4.096 1.024-6.144 2.048v77.824c0 21.405-16.122 34.816-33.792 34.816-19.456 0-34.816-15.36-34.816-34.816V102.4C12.245 92.16 3.029 75.776 3.029 57.344 3.029 25.6 28.629 0 60.373 0s57.344 25.6 57.344 57.344c0 18.432-8.192 34.816-22.528 45.056v31.744c4.124-1.374 58.768-28.672 114.688-28.672 65.27 0 97.676 27.648 126.976 27.648 38.912 0 81.92-27.648 92.16-27.648 8.192 0 15.36 6.144 15.36 13.312v240.64z">
    </path>
</svg>

Modifier: J'ai fait quelques tests supplémentaires, et après j'ai a changé le fichier .svg d'origine, Android n'a pas mis à jour le fichier de ressources .xml lors de la construction. De plus, la valeur de la couleur dans ce fichier n'est pas importante car vous pouvez la modifier dans votre fichier de mise en page, ou dynamiquement.


0 commentaires