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?
risposta
È un file .png. Ci sono molti editor di immagini là fuori. Devi solo riempire le parti
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.
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 !! –
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.
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
beh non puoi cambiarlo usando il codice. ma questo url ti aiuterà sicuramente. http://goo.gl/a82Peu – satyapol
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));
ha funzionato per me !! – Nischal
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.
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
<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"
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()
Se supponiamo che l'icona debba essere mostrata in 200 colori diversi, allora potrai inserire 200 icone con colori diversi nel tuo drawable? –
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
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
/>
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();
Hai provato qualcosa di simile a Android: background = "@ colore/rosso"? – 10101010
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
@rajatIIT android: lo sfondo fa una casella rossa attorno all'icona e l'icona rimane di colore grigio. – Akshay