Ich versuche tatsächlich, farbige Symbole in meiner App zu verwenden. Ich habe das offizielle Materialdesign-Icon-Pack von hier heruntergeladen. Jetzt sind alle Symbole in diesem Paket entweder weiß, grau oder schwarz. Aber ich möchte, dass die Icons eine andere Farbe haben ... Etwas wie die Icons auf der linken Seite in diesem Bild . Die Telefon- und Mail-Symbole sind blau. Wie kann ich das erreichen?
Zum Ändern der Symbolfarbe versuchen Sie es
<ImageButton
Android:layout_width="your value"
Android:layout_height="your value"
/* and so on ... */
Android:tint="YourColor"
/>
Hinweis: Die Tönungsfarbe wird auf die Oberseite des Bildes gemalt, nicht auf eine Ersatzfarbe. Der Farbton #80ff0000
auf einem schwarzen Bild ergibt 50% Rot auf Schwarz und nicht 50% Rot auf dem Hintergrund. Das heißt Dies ist nicht äquivalent zu iOS-Vorlagenbildern.
Sie können die Variable TintImageView
in der Appcompat-Unterstützungsbibliothek verwenden. Anschließend können Sie die Bildansicht färben/einfärben, indem Sie einfach den Code Android:backgroundTint
aufrufen, um die Bildansicht in einer Farbe zu färben.
Xml
<TintImageView
Android:layout_width=""
Android:layout_height=""
Android:src=""
Android:backgroundTint="@color/green"/>
oder
<ImageView
Android:tint="the_color_you_want"/>
Programmatisch
ImageView yourImageView = findViewById(...)
yourImageView.setColorFilter(Context.getColor(your_color_here))
Die obige XML-Datei färbt die Bildansicht daher grün, sodass jedes Pixel der Bildansicht, das sichtbar ist, grün dargestellt wird.
Ich habe das gleiche gesucht, es aber dynamisch im Code zu ändern. Ich hoffe, das hilft jemandem, der dasselbe sucht.
Erstellen Sie eine ImageView für das Symbol und verwenden Sie setColorFilter für diese Ansicht.
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>
sie ändern die Farbe, indem Sie Android ändern: fillColor = "# ca0f0f"
Viele Alternativen hier schon in diesem Thread. Vielleicht kann ich noch ein weiteres hinzufügen, wenn es für Sie bequemer ist:
Sie können auch die Klasse Drawable verwenden. Der Code lautet wie folgt
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));
Das oben genannte hat zwar den Trick für mich, aber für meinen Anwendungsfall war es sinnlos, Android:tint
zu verwenden.
Ja, es ist möglich und es ist einfach, diese Bibliothek zu verwenden: https://github.com/jrvansuita/IconHandler
Sie können dies leicht nennen:
Icon.on(yourImageView).color(R.color.your_color).icon(R.mipmap.your_icon).put();
So ändern Sie die Farbe des Materialsymbols in XML
<ImageButton
Android:layout_width="YourValue"
Android:layout_height="YourValue"
...
Android:tint="YourColor" // this line do the magic
/>
Verwenden Sie den folgenden Code, um die Farbe Ihres Symbols von XML zu ändern
<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"
/>