it-swarm.com.de

Ist es möglich, die Farbe des Materialdesign-Symbols in Android von XML zu ändern?

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?

28
Akshay

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.

48
Yogesh Borkhade

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.

32
Rod_Algonquin

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));
11
user3830188
<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"

4
Murali

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.

1
Neil B

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();
0
Vansuita Jr.

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
/>
0

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" 
/>
0
Ibiam Obinna