2015-04-22 2 views
27

Ich versuche tatsächlich, farbige Symbole in meiner App zu verwenden. Ich habe das offizielle Material Design Icon Pack von here 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 Symbole auf der linken Seite in this image. Die Telefon- und Mail-Symbole sind blau. Wie kann ich das erreichen?Ist es möglich, Material Design-Symbolfarbe von Xml in Android zu ändern?

+0

Haben Sie versucht, so etwas wie android: background = "@ color/rot"? – 10101010

+0

Da die Symboldatei im PNG-Format vorliegt, sollten Sie die Farbe mit dem Werkzeug ändern, mit dem Sie das Symbol erstellt haben. und fügen Sie es mithilfe von ImageAsset in das Projekt ein. – satyapol

+0

@rajatIIT Android: Hintergrund macht eine rote Box um das Symbol, und das Symbol bleibt immer noch grau in der Farbe. – Akshay

Antwort

-3

Es ist eine .png-Datei. Es gibt viele Bildbearbeiter da draußen. Sie müssen nur die Teile füllen

32

Sie die TintImageView innerhalb der appcompat Support-Bibliothek verwenden und dann färben/Färben der Imageview ist einfach durch die android:backgroundTint Aufruf der Imageview in einer Farbe tönen.


Xml

<TintImageView 
android:layout_width="" 
android:layout_height="" 
android:src="" 
android:backgroundTint="@color/green"/> 

oder

<ImageView 
android:tint="the_color_you_want"/> 

Programatically

ImageView yourImageView = findViewById(...) yourImageView.setColorFilter(Context.getColor(your_color_here))


So ist die oben xml die Imageview tönen grün zu färben, bedeutet, dass es jedes Pixel des Imageview kolorieren wird, die grün sichtbar sind.

+0

wenn ich das Zeichen ändern will links | rechts-Symbol Farbton für EditText TextView gibt es keine Möglichkeit, das zu tun, was ich fühle! * android: backgroundTint = "@ android: farbe/holo_blue_bright" * funktioniert nicht !! –

-2

Da die Symboldatei im PNG-Format vorliegt, sollten Sie die Farbe mit dem Werkzeug ändern, mit dem Sie das Symbol erstellt haben. und fügen Sie es mithilfe von ImageAsset in das Projekt ein.

+0

Ich habe die Farbe nicht selbst erstellt. Ich verwende die Icons aus dem offiziellen Icon-Paket von Google. Ich möchte auch wissen, ob es möglich ist, es innerhalb des Codes selbst zu tun, – Akshay

+0

und Sie können es nicht ändern, indem Sie Code verwenden. aber diese URL wird dir sicherlich helfen. http://goo.gl/a82Peu – satyapol

10

Ich suchte nach der gleichen Sache, aber um es dynamisch im Code zu ändern. Ich hoffe, das hilft jemandem, der das Gleiche sucht.

ein Image für das Symbol Erstellen und setColorFilter auf dieser Ansicht verwenden.

ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon); 
imageViewIcon.setColorFilter(getContext().getResources().getColor(R.color.blue)); 
+0

es funktionierte für mich !! – Nischal

42

Für Iconfarbe

<ImageButton 
    android:layout_width="your value" 
    android:layout_height="your value" 
    /* and so on ... */ 

    android:tint="YourColor" 
    /> 

Hinweis versuchen zu ändern: die Tönung Farbe ontop des Bildes gemalt, keine Ersatzfarbe. Tint #80ff0000 auf einem schwarzen Bild gibt Ihnen 50% rot auf schwarz, nicht 50% rot auf dem Hintergrund. I.e. Dies entspricht nicht den iOS-Vorlagenbildern.

+0

Willkommen bei Stack Overflow! Bitte bedenken Sie, dass Sie Ihren Beitrag bearbeiten müssen, um weitere Erklärungen dazu zu erhalten, was Ihr Code tut und warum es das Problem löst. Eine Antwort, die meist nur Code enthält (auch wenn es funktioniert), hilft dem OP normalerweise nicht, sein Problem zu verstehen. Es wird auch empfohlen, dass Sie keine Antwort posten, wenn es nur eine Vermutung ist. Eine gute Antwort wird einen plausiblen Grund dafür haben, warum sie das Problem des OP lösen könnte. – SuperBiasedMan

4
<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 Farbe ändern, indem Sie android Wechsel: fillColor = "# ca0f0f"

-1

zu Hinzufügen was Murali sagte, mehrere Drawables mit unterschiedlichen Füllfarben machen. Dann

wenn nötig, in dem Code:

imageView.setImageResource(R.drawable.drawable_with_different_color) 

NICHT: imageView.setBackgroundResource()

+0

Wenn das Symbol in 200 verschiedenen Farben angezeigt werden soll, werden dann 200 Symbole mit unterschiedlichen Farben in das Zeichenfeld eingefügt? –

1

Viele Alternativen hier bereits in diesem Thread.Vielleicht kann ich noch einen für hinzufügen, wer es bequem findet:

Sie auch die Auslosungs Klasse verwenden können, wobei der Code als

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)); 

folgt Obwohl die oben den Trick für mich getan hat, aber für meinen Anwendungsfall suggicient android:tint

0

zu verwenden war, wie

<ImageButton 
    android:layout_width="YourValue" 
    android:layout_height="YourValue" 
    ... 
    android:tint="YourColor" // this line do the magic 
/> 
0

Ja in XML-Material Symbol Farbe zu ändern, ist es möglich, und es ist einfach, diese Bibliothek: 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(); 
Verwandte Themen