En fait, j'essaie d'utiliser des icônes de couleur dans mon application. J'ai téléchargé le pack d'icônes de conception de matériel officiel depuis ici . Désormais, toutes les icônes de ce pack sont blanches, grises ou noires. Mais je veux que les icônes soient d'une couleur différente ... Quelque chose qui ressemble aux icônes à gauche dans cette image . Les icônes de téléphone et de courrier sont en bleu. Comment puis-je accomplir cela?
Pour changer la couleur de l'icône, essayez
<ImageButton
Android:layout_width="your value"
Android:layout_height="your value"
/* and so on ... */
Android:tint="YourColor"
/>
Remarque: la couleur de teinte est peinte au sommet de l'image et non une couleur de remplacement. Ainsi, la teinte #80ff0000
sur une image noire vous donne 50% de rouge sur noir, pas 50% de rouge sur le fond C'est à dire. ce n'est pas équivalent aux images modèles iOS.
Vous pouvez utiliser la variable TintImageView
dans la bibliothèque de support appcompat, puis colorier/visionner l'image est simplement en appelant le Android:backgroundTint
pour teinter l'image dans une couleur.
Xml
<TintImageView
Android:layout_width=""
Android:layout_height=""
Android:src=""
Android:backgroundTint="@color/green"/>
ou
<ImageView
Android:tint="the_color_you_want"/>
Par programme
ImageView yourImageView = findViewById(...)
yourImageView.setColorFilter(Context.getColor(your_color_here))
Le xml ci-dessus teint donc le vert en couleur, ce qui signifie qu'il colorera chaque pixel de la vue image visible en vert.
Je cherchais la même chose mais je le changeais dynamiquement dans le code. J'espère que cela aide quelqu'un qui cherche la même chose.
Créez un ImageView pour l'icône et utilisez setColorFilter sur cette vue.
ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon);
imageViewIcon.setColorFilter(getContext().getResources().getColor(R.color.blue));
<vector Android:height="48dp" Android:viewportHeight="24.0"
Android:viewportWidth="24.0" Android:width="48dp" xmlns:Android="http://schemas.Android.com/apk/res/Android">
<path Android:fillColor="#ca0f0f" Android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2H5c-1.11,0 -2,0.9 -2,2zm12,4c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zm-9,8c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1H6v-1z"/>
</vector>
vous changez de couleur en changeant Android: fillColor = "# ca0f0f"
Beaucoup d'alternatives ici déjà dans ce fil. Peut-être puis-je en ajouter un de plus pour celui qui le trouvera commode:
Vous pouvez également utiliser la classe Drawable, le code étant comme suit
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.ic_play_circle_filled);
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, getResources().getColor(R.color.colorPrimary));
Bien que ce qui précède a fait l'affaire pour moi, mais pour mon cas d'utilisation, suggicient d'utiliser Android:tint
Oui, c'est possible et c'est simple en utilisant cette bibliothèque: https://github.com/jrvansuita/IconHandler
Vous pouvez facilement appeler cela:
Icon.on(yourImageView).color(R.color.your_color).icon(R.mipmap.your_icon).put();
Comment changer la couleur d'une icône de matériau en XML
<ImageButton
Android:layout_width="YourValue"
Android:layout_height="YourValue"
...
Android:tint="YourColor" // this line do the magic
/>
Utilisez le code suivant pour modifier la couleur de votre icône à partir de xml
<ImageView
Android:id="@+id/imageView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
...
Android:foregroundTintMode="src_over"
Android:tint="Your colour"
...
app:srcCompat="@Android:drawable/ic_menu_slideshow"
/>