Chaque fois que je crée un ImageView avec une icône ajoutée à l'aide des ressources vectorielles d'Android Studio, j'obtiens une erreur à la ligne app:srcCompat="@drawable/ic_play"
Lorsque je change le app:srcCompat
avec android:src
, l'erreur a disparu mais l'icône semble pixélisée.
Quelle est la principale différence entre
app:srcCompat="@drawable/ic_play"
et
android:src="@drawable/ic_play"
la source
build.gradle
, mais cela ne fonctionne toujours pas, des idées?Si vous utilisez
android:src="@drawable/some_vector"
sansvectorDrawables.useSupportLibrary = true
dans le fichier build.gradle et votre application contient des images vectorielles (vecteur étirables), puis en construisant le APK fichier Android plug - in gradle génère beaucoup de fichiers * .png pour les écrans différents (hdpi, xhdpi ...) de chacun de vos vecteurs dessinables (uniquement pour API = <19). Le résultat - une plus grande taille d' apk .Lors de l'utilisation
app:srcCompat="@drawable/some_vector"
avecvectorDrawables.useSupportLibrary = true
Android utilise des fichiers vectoriels dessinables sans générer de*.png
fichiers.Vous pouvez vérifier cela avec l'outil d'analyse d'apk Android Studio. Construisez simplement apk avec et sans
vectorDrawables.useSupportLibrary = true
.Je pense que c'est la principale différence.
la source
Utilisation:
L'attribut srcCompat est en fait défini dans la bibliothèque AppCompat. Important: vous devrez ajouter l'espace de noms approprié pour cela.
Remarque
Ce que vous obtenez semble être juste une erreur de peluche qui peut être ignorée. J'ai essayé et j'ai obtenu la même erreur, mais cela fonctionne correctement.
Vous pouvez utiliser
tools:ignore="MissingPrefix"
pour éviter de voir cette erreur, temporairement.J'espère que ça aide.
la source
Lorsque vous utilisez
AppCompat
avecImageView
(ou des sous-classes telles queImageButton
etFloatingActionButton
), vous pourrez utiliser le nouvelapp:srcCompat
attribut pour référencer des dessins vectoriels sur les anciennes versions de la plate-forme (ainsi que sur tout autre dessin disponible pourandroid:src
) .android.support.v7.appcompat.R.attr.srcCompat :
N'oubliez pas d'ajouter
xmlns:app="http://schemas.android.com/apk/res-auto"
lors de l'utilisationapp:srcCompat
.la source
Les vecteurs et les vecteurs animés n'étaient pris en charge que dans les versions récentes du framework. srcCompat peut être utilisé avec la bibliothèque de compatibilité pour les faire fonctionner, mais cela ne fonctionne qu'avec certaines vues de la bibliothèque de support. Notez que l'application: est utilisée à la place d'Android :. Cela signifie qu'il ne fait pas partie du framework, mais d'un paramètre défini par votre application.
la source
signifie que c'est AppCompatActivity src qui vient dans la bibliothèque de support tandis que
fait référence à une activité simple.
la source
Lorsque vous utilisez
AppCompat
avecImageView
(ou des sous-classes telles queImageButton
etFloatingActionButton
), vous pourrez utiliser le nouvelapp:srcCompat
attribut pour référencer des éléments vectoriels dessinés (ainsi que tout autre dessinable disponible pourandroid:src
). Et si vous changez les drawables au moment de l'exécution, vous pourrez utiliser la mêmesetImageResource()
méthode qu'avant (aucun changement ici).L'utilisation de
AppCompat
etapp:srcCompat
est la méthode la plus infaillible pour intégrer des dessins vectoriels dans votre application. Vous constaterez que le référencement direct de dessinables vectoriels en dehors deapp:srcCompat
échouera avant Lollipop .la source
Android 5.0 (niveau d'API 21) et supérieur fournit un support de dessin vectoriel afin de prendre en charge les dessinables vectoriels dans les anciennes versions de l'application: srcCompat a été ajouté
la source