J'utilise la bibliothèque de support de conception 23.2. J'ai ajouté ces lignes dans mon build.gradle car mon plugin Gradle est la version 1.5
defaultConfig {
applicationId "com.abc.xyz"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
generatedDensities = []
}
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
comme il est spécifié dans ici
Mais je ne peux pas utiliser l'attribut srcCompat pour mon imageview.
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:srcCompat="@drawable/wallpaper"/>
où @ drawable/wallpaper est un fichier de ressources vectoriel
<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="#FF000000"
Android:pathData="M4,4h7V2H4c-1.1,0 -2,0.9 -2,2v7h2V4zm6,9l-4,5h12l-3,-4 -2.03,2.71L10,13zm7,-4.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S14,7.67 14,8.5s0.67,1.5 1.5,1.5S17,9.33 17,8.5zM20,2h-7v2h7v7h2V4c0,-1.1 -0.9,-2 -2,-2zm0,18h-7v2h7c1.1,0 2,-0.9 2,-2v-7h-2v7zM4,13H2v7c0,1.1 0.9,2 2,2h7v-2H4v-7z"/>
Ça dit
Erreur: (14) Aucun identifiant de ressource trouvé pour l'attribut 'srcCompat' dans le package 'Android'
Ma version de Gradle est 1.5. Comment puis-je utiliser srcCompat?
ne pas
Android:srcCompat="@drawable/wallpaper"
Do
app:srcCompat="@drawable/wallpaper"
comme il srcCompat attribut est en fait défini dans la bibliothèque AppCompat.
Important vous devrez ajouter un espace de noms approprié pour cela.
xmlns: app = "http://schemas.Android.com/apk/res-auto"
Important
ce que vous obtenez, il semble que ce soit juste une erreur de peluches qui peut être ignorée. J'ai essayé et ai la même erreur, mais cela fonctionne correctement.
vous pouvez utiliser tools:ignore="MissingPrefix"
pour ne pas voir cette erreur temporairement.
Combinant plusieurs réponses en une seule réponse:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
Android:background="@color/primary">
<Android.support.v7.widget.AppCompatImageView
Android:layout_width="300dp"
Android:layout_height="100dp"
Android:id="@+id/logoImageView"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
app:srcCompat="@drawable/my_logo_vector"
Android:tint="@color/white"
/>
</RelativeLayout>
Cela a fonctionné pour moi. Aucune erreur de peluche. Utilisez AppCompatImageView
.
Premier (dans build.gradle)
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
Seconde
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_traffic_black_24dp"
tools:ignore="MissingPrefix" />
Troisième
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Et c'est parti.
Appel app:srcCompat
au lieu de Android:srcCompat
.
Ne pas
Android:srcCompat="@drawable/your_image"
[~ # ~] faire [~ # ~]
app:srcCompat="@drawable/your_image"
Enfin
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
app:srcCompat="@drawable/wallpaper"/>
Mettez à niveau votre version Gradle .
Solution
Gradle Plugin 2.0+
com.Android.tools.build:gradle:2.0.0-beta2
Les dessins vectoriels vous permettent de remplacer plusieurs ressources png par un seul vecteur graphique, défini en XML. Alors qu'ils étaient auparavant limités aux périphériques Lollipop et supérieurs, VectorDrawable et AnimatedVectorDrawable sont désormais disponibles via deux nouvelles bibliothèques de support support-vector-dessinable et support-animated-vector-dessinable.
Ajoute ça
// Gradle Plugin 2.0+
Android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Vous noterez que ce nouvel attribut n’existe que dans la version 2.0 du plug-in Gradle. Si vous utilisez Gradle 1.5, vous utiliserez plutôt
// Gradle Plugin 1.5
Android {
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
Passer à travers Drawables de vecteur de support
il y a plusieurs choses dont vous devez vous soucier Tout d'abord, utilisez:
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
ou
vectorDrawables {
useSupportLibrary = true
}
et deuxième utilisation
<Android.support.v7.widget.AppCompatImageView
Android:id="@+id/changeLanguages"
Android:layout_width="50dp"
Android:layout_height="50dp"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"
Android:adjustViewBounds="true"
Android:background="@color/transparent"
Android:scaleType="fitCenter"
app:srcCompat="@drawable/ic_transfer" />
Toujours utiliser AppCompatImageView ou Button car l'image vectorielle n'est pas prise en charge par Simple ImageView
si toutes les méthodes ci-dessus ne fonctionnent pas, utilisez
public class App extends Application {
@Override public void onCreate() {
super.onCreate();
// Make sure we use vector drawables
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
}
Si vous utilisez Activity, développez votre activité avec AppCompatActivty
public final class MainActivity extends AppCompatActivity {
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Je viens de changer:
app:srcCompat="@drawable/wallpaper"
à
Android:src="@drawable/wallpaper"
Cela a fonctionné pour moi.
Vous utilisez Android:srcCompat
. Il devrait au lieu de cela par app:srcCompat
comme il s’agit d’un attribut défini dans AppCompat et non dans le Android:
espace de noms.
Assurez-vous que l'image que vous essayez d'utiliser est au format PNG.
Copiez la photo.
Accédez à mipmap sur l'onglet 1.Projet de la hiérarchie Android.
Cliquez une fois sur mipmap puis (Sous Windows ctrl + v), lorsque vous nommez la photo, assurez-vous que ses lettres sont en minuscule et qu'aucun symbole ne s'y trouve.
La photo devrait être utilisable.
Définissez la vue de votre image (vous devrez peut-être utiliser une couleur de remplissage temporairement).
Cliquez sur l'imageView, puis cliquez sur srcCompact (celui sans pinceau et tapez sur @ mipmap/"Le nom de votre image" (Cette étape se trouve dans l'onglet des attributs)
Cela devrait fonctionner!
Si vous avez besoin d'une description de contenu, je viens d'utiliser @ String/StringPicture
mettre à jour votre plugin Gradle à 2.0+
// Gradle Plugin 1.5
Android {
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
selon les lignes directrices de blog du développeur de Google
http://Android-developers.blogspot.in/2016/02/Android-support-library-232.html
De, site de développement Android
Cette bibliothèque est maintenant une dépendance du v7 AppCompat library
, permettant aux développeurs et à AppCompat d’utiliser facilement les dessins vectoriels.
Pour utiliser VectorDrawableCompat dans un contrôle ImageButton ou ImageView, , utilisez l'attribut XML app: srcCompat ou la méthode setImageResource ().
Pour que les ID d'attribut soient référencés au niveau 20 ou inférieur de l'API, ajoutez l'indicateur appt suivant à votre fichier de génération et de dégradé:
Si vous construisez avec Android Plugin pour Gradle 1.5.0 ou inférieur , ajoutez ce qui suit à votre build.gradle fichier:
Android {
defaultConfig {
// Stops the Gradle’s automatic rasterization of vectors
generatedDensities = []
}
// Flag that tells aapt to keep the attribute ids
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
Si vous construisez avec Android Plugin pour Gradle 2.0.0 ou supérieur , ajoutez ce qui suit à votre build.gradle fichier:
Android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
vous devez ajouter
xmlns: app = "http://schemas.Android.com/apk/res-auto"
à votre mise en page pour que cela fonctionne. Mon "app: srcCompat" a été surlignée en rouge jusqu'à ce que je l'ajoute.