2015-04-22 12 views
27

In realtà sto cercando di utilizzare icone colorate nella mia app. Ho scaricato il pacchetto di icone del material design ufficiale da here. Ora tutte le icone di questo pacchetto sono bianche, grigie o nere. Ma voglio che le icone abbiano un colore diverso. Qualcosa come le icone sul lato sinistro in this image. Le icone del telefono e della posta sono blu. Come posso realizzare questo?È possibile modificare il colore dell'icona del design del materiale da xml in Android?

+0

Hai provato qualcosa di simile a Android: background = "@ colore/rosso"? – 10101010

+0

Poiché il file dell'icona è in formato .png, è necessario cambiare il colore usando lo strumento da cui hai creato l'icona. e aggiungilo usando ImageAsset nel progetto. – satyapol

+0

@rajatIIT android: lo sfondo fa una casella rossa attorno all'icona e l'icona rimane di colore grigio. – Akshay

risposta

-3

È un file .png. Ci sono molti editor di immagini là fuori. Devi solo riempire le parti

32

Puoi usare lo TintImageView all'interno della libreria di supporto dell'appcompat e quindi colorare/colorare l'immagine è semplicemente chiamando lo android:backgroundTint per colorare l'immagine in un unico colore.


XML

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

o

<ImageView 
android:tint="the_color_you_want"/> 

Programatically

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


Così il sopra XML colorare l'ImageView a colore verde, significa che esso colorare ciascun pixel imageview che sono visibili a verde.

+0

se voglio cambiare l'icona sinistra | destra di Drawable per EditText TextView non c'è modo di farlo mi sento! * android: backgroundTint = "@ android: color/holo_blue_bright" * non funziona !! –

-2

Poiché il file dell'icona è in formato .png, è necessario modificare il colore utilizzando lo strumento da cui è stata creata l'icona. e aggiungilo usando ImageAsset nel progetto.

+0

Non ho creato il colore da solo. Sto usando le icone del pacchetto di icone ufficiale fornito da Google. Inoltre voglio sapere se è possibile farlo all'interno del codice stesso, – Akshay

+0

beh non puoi cambiarlo usando il codice. ma questo url ti aiuterà sicuramente. http://goo.gl/a82Peu – satyapol

10

Stavo cercando la stessa cosa ma cambiarlo dinamicamente nel codice. Spero che questo aiuti qualcuno a cercare la stessa cosa.

Creare un ImageView per l'icona e utilizzare setColorFilter su quella vista.

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

ha funzionato per me !! – Nischal

42

Per cambiare icona di colore provare

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

    android:tint="YourColor" 
    /> 

Nota: il colore della tinta è dipinto ontop dell'immagine, non un colore di sostituzione. In questo modo, la tinta #80ff0000 su un'immagine nera ti dà il 50% di rosso sul nero, non il 50% di rosso sullo sfondo. Cioè questo non è equivalente alle immagini dei modelli iOS.

+0

Benvenuti in Stack Overflow! Ti preghiamo di considerare di modificare il tuo post per aggiungere ulteriori spiegazioni su cosa fa il tuo codice e perché risolverà il problema. Una risposta che per lo più contiene solo codice (anche se funziona) di solito non aiuta l'OP a capire il loro problema. Si consiglia inoltre di non pubblicare una risposta se è solo un'ipotesi. Una buona risposta avrà una ragione plausibile per cui potrebbe risolvere il problema dell'OP. – 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> 

si cambia colore modificando Android: fillColor = "# ca0f0f"

-1

Aggiungendo a ciò che ha detto Murali, effettuare più drawable con diversi colori di riempimento.

Poi, quando necessario, aggiungere al codice:

imageView.setImageResource(R.drawable.drawable_with_different_color) 
NON

: imageView.setBackgroundResource()

+0

Se supponiamo che l'icona debba essere mostrata in 200 colori diversi, allora potrai inserire 200 icone con colori diversi nel tuo drawable? –

1

Molte alternative già qui in questo thread.Forse posso aggiungere un altro per chi lo trova conveniente:

È inoltre possibile utilizzare la classe Drawable, il codice essendo come segue

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

Anche se quanto sopra ha fatto il trucco per me, ma per il mio caso d'uso suggicient era quello di utilizzare android:tint

0

Come cambiare il materiale icona di colore in XML

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

Sì, è possibile ed è semplice utilizzando questa libreria: https://github.com/jrvansuita/IconHandler

Si può facilmente chiamare questo:

Icon.on(yourImageView).color(R.color.your_color).icon(R.mipmap.your_icon).put(); 
Problemi correlati