2015-04-22 30 views
27

Aslında uygulamanızda renkli simgeleri kullanmaya çalışıyorum. Resmi malzeme tasarım ikon paketini here'dan indirdim. Şimdi bu paketteki tüm simgeler beyaz, gri veya siyah. Ama simgelerin farklı bir renk olmasını istiyorum. Sol taraftaki simgeler gibi bir şey this image. Telefon ve posta simgeleri mavidir. Bunu nasıl başarabilirim?Android'de malzeme tasarım simgesi rengini xml'den değiştirmek mümkün müdür?

+0

Eğer android gibi bir şey denedin mi? – 10101010

+0

Simge dosyası .png biçiminde olduğu için, simgeyi oluşturduğunuz aracı kullanarak rengi değiştirmelisiniz. ve ImageAsset kullanarak projeye ekleyin. – satyapol

+0

@rajatIIT android: arka plan, simgenin etrafında kırmızı bir kutu oluşturur ve simge hala gri renkli kalır. – Akshay

cevap

-3

Bu .png dosyası. Orada çok sayıda görüntü editörü var. Sadece Sen AppCompat destek kütüphane içinde TintImageView kullanmak ve daha sonra renklendirilmesi/ImageView boyama basitçe tek renk haline ImageView renklendirmek için android:backgroundTint arayarak olduğunu yapabilirsiniz parçaları

32

doldurmak zorunda.


XML

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

veya

Programlama yoluyla
<ImageView 
android:tint="the_color_you_want"/> 

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


Yani yukarıdaki xml, yeşil renk imageView tonu yeşil görünür ImageView her pikseli renklendirmek anlamına gelir edecektir.

+0

Eğer çekilemez sola değiştirmek istersem, sağ ikon Düzenle için EditText TextView Orada hissettirmenin bir yolu yok! * android: backgroundTint = "@ android: color/holo_blue_bright" * işe yaramaz! –

-2

Simge dosyası .png biçiminde olduğu için, simgeyi oluşturduğunuz aracı kullanarak rengi değiştirmelisiniz. ve ImageAsset kullanarak projeye ekleyin.

+0

Rengi kendim yaratmadım. Google tarafından sağlanan resmi simge paketindeki simgeleri kullanıyorum. Ayrıca kodu kendi içinde yapabilmek mümkün olup olmadığını bilmek istiyorum, – Akshay

+0

kod kullanarak bunu değiştiremezsiniz. ama bu url kesinlikle yardımcı olacaktır. http://goo.gl/a82Peu – satyapol

10

Aynı şeyi arıyordum ama kodu dinamik olarak değiştirmek için. Umarım bu aynı şeyi arayan birine yardımcı olur.

Simge için bir ImageView oluşturun ve bu görünümde setColorFilter öğesini kullanın. tonu renk görüntüsü değil, bir yedek renk ontop boyanmıştır: simge rengi

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

    android:tint="YourColor" 
    /> 

Not deneyin değiştirmek için

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

benim için çalıştı! – Nischal

42

. Bu nedenle siyah bir görüntü üzerinde #80ff0000 renk tonu, arka planda% 50 kırmızı değil, siyah üzerine% 50 kırmızı verir. Yani Bu, iOS şablon resimlerine eşdeğer değildir. , FillColor = "# ca0f0f"

+0

Yığın Taşmasına Hoş Geldiniz! Lütfen kodunuzun ne yaptığını ve neden bu sorunu çözeceği konusunda daha fazla açıklama eklemek için yayınınızı düzenlemeyi düşünün. Çoğunlukla sadece kod içeren bir cevap (çalışsa bile) genellikle OP'nin problemlerini anlamasına yardımcı olmaz. Ayrıca, bir tahminde bulunmanız durumunda bir cevap göndermemeniz önerilir. İyi bir cevap, OP'nin sorununu neden çözebileceğine dair makul bir nedene sahip olacaktır. – 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> 

android değiştirerek rengini değiştirmek. gerektiğinde

Sonra kodunuzu ekleyin:

imageView.setImageResource(R.drawable.drawable_with_different_color) 

DEĞİL: imageView.setBackgroundResource()

-1

Murali söylediklerine ekleme farklı dolgu renkleri ile birden drawables olun:

+0

Eğer ikonun 200 farklı renkte gösterilmesi gerektiğine inanıyorsanız, o zaman çekilebileceğin farklı renklerde 200 ikon koyacak mısın? –

1

Birçok alternatifler burada zaten bu thread.

Ayrıca Drawable sınıfını kullanabilirsiniz yukarıda benim için hile yaptı rağmen

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

aşağıdaki gibi kod olmak, ama benim kullanım örneği için: Belki uygun görülmesi kim için bir tane daha ekleyebilirsiniz suggicient XML malzeme simgesi rengini değiştirmek için nasıl android:tint

0

kullanmaktı

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

Evet, bu mümkün ve bu kütüphaneyi kullanan basit: https://github.com/jrvansuita/IconHandler

Kolayca bu çağırabilirsiniz: "/ kırmızı @ rengi" arka plan =:

Icon.on(yourImageView).color(R.color.your_color).icon(R.mipmap.your_icon).put(); 
İlgili konular