J'utilise une bibliothèque de support pour afficher des images vectorielles sur Android KitKat. Lorsque je teste mon application sur emulater, je ne vois aucune de ces images. J'ai créé une mise en page distincte pour Android Lollipop et versions ultérieures et tout s'est parfaitement bien déroulé (je pense que j'utilise l'attribut src
au lieu de srcCompat
Here est le code dans lequel je suis la bibliothèque de support usign.
<LinearLayout Android:layout_alignParentBottom="true"
Android:id="@+id/lake_detail"
Android:background="@drawable/my_fishing_plan_footer_line"
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="90dp"
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<RelativeLayout
Android:layout_marginRight="3dp"
Android:id="@+id/fire_logo"
Android:layout_width="20sp"
Android:layout_height="20sp">
<ImageView
Android:tint="#d74313"
app:srcCompat="@drawable/circle_icon"
Android:layout_width="30sp"
Android:layout_height="30sp" />
<ImageView
Android:layout_centerVertical="true"
Android:layout_centerHorizontal="true"
app:srcCompat="@drawable/lauzaviete"
Android:layout_width="25dp"
Android:layout_height="25dp" />
</RelativeLayout>
et c’est étrange car je vois les images sur la fenêtre d’aperçu du studio Android.
Utilisez Android.support.v7.widget.AppCompatImageView
au lieu de ImageView
dans votre mise en page, comme ceci:
<LinearLayout
...
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<Android.support.v7.widget.AppCompatImageView
Android:tint="#d74313"
app:srcCompat="@drawable/circle_icon"
Android:layout_width="30sp"
Android:layout_height="30sp" />
<Android.support.v7.widget.AppCompatImageView
Android:layout_centerVertical="true"
Android:layout_centerHorizontal="true"
app:srcCompat="@drawable/lauzaviete"
Android:layout_width="25dp"
Android:layout_height="25dp" />
</LinearLayout>
Voir les documents AppCompatImageView
_ ici et app:srcCompat
ici .
Configurez votre build.gradle
Android {
defaultConfig {
vectorDrawables {
useSupportLibrary = true
}
}
}
Étendez votre Activity
avec AppCompatActivity
public final class MainActivity extends AppCompatActivity {
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Lorsque vous utilisez app:srcCompat
, assurez-vous de disposer des déclarations correctes dans votre présentation:
<LinearLayout
...
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
...
</LinearLayout>
Facultatif (avertissement: veuillez lire la documentation): setCompatVectorFromResourcesEnabled
dans votre Application
classe
public class App extends Application {
@Override public void onCreate() {
super.onCreate();
// Make sure we use vector drawables
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
}
Docs: _ https://developer.Android.com/reference/Android/support/v7/app/AppCompatDelegate.html#setCompatVectorFromResourcesEnabled(boolean) } _
J'ai eu un problème similaire et après avoir suivi toutes les étapes de la réponse de Jared Burrows le problème n'était pas résolu.
Il s'avère que l'espace de nom "app" dans mon fichier de mise en page a été défini comme suit:
xmlns:app="http://schemas.Android.com/tools"
au lieu de:
xmlns:app="http://schemas.Android.com/apk/res-auto"
Après avoir changé cela, le problème a été résolu
utilisation:
Android:background="@drawable/circle_icon"
au lieu de:
app:srcCompat="@drawable/circle_icon"
Mettez en œuvre et app:srcCompact
et vous pourrez ensuite l’utiliser sur la ImageView
implementation 'com.Android.support:appcompat-v7:28.0.0'
Assurez-vous de mettre en œuvre la bonne version.
Ensuite, dans votre build.gradle
, définissez Android.defaultConfig.vectorDrawables.useSupportLibrary = true
defaultConfig {
//...
vectorDrawables {
useSupportLibrary true
}
}
Incase quelqu'un d'autre rencontre ce problème et utilise androidx , puis essayez d'utiliser androidx.appcompat.widget.AppCompatImageView
De plus, assurez-vous que votre dessin vectoriel se trouve dans drawable
et non dans drawable-anydpi
.
Je me retrouve souvent avec des problèmes si les graphiques situés dans le dossier drawable-anydpi
.
En résumé:
Mettez un support vectoriel dans votre module (build.gradle)
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
Au lieu de Android:src="@drawable/icon"
, utilisez app:srcCompat="@drawable/icon"
Assurez-vous que votre Activity extends AppCompatActivity
sans cette étape n'est pas possible d'afficher une image vectorielle avec app:srcCompat