2015-08-17 18 views
5

Bir FloatingActionButton'unda bir simge kaynak resmi nasıl tonlanır? favoriteFab.setColorFilter(R.color.yellow, PorterDuff.Mode.OVERLAY);'u denedim, ancak başarı yok.FloatingActionButton'da Android renk tonu simgesi

+2

Ben -5 alıyorum Neden, bu sadece bir sorudur ?? – fab

+1

Ben kendimi merak ediyordum .. belki detay eksikliği? Soruyu anlayabiliyorum .. idk. –

cevap

6

API 21 veya üstünü kullanıyorsanız, bu şekilde çizilebilir renk tonunu ayarlayabilirsiniz.

mFAB.getDrawable() mutate() setTint (getResources(). GetColor (R.color.yourColor));

E.g.

mFAB = (FloatingActionButton) findViewById(R.id.fab); 
mFAB.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Snackbar.make(v, "Yummy snackbar", LENGHT_LONG).show(); 
    } 
}); 
mFAB.getDrawable().mutate().setTint(getResources().getColor(R.color.colorAccent)); 

Güncelleme: GetColor yana yerine ContextCompat kullanmalısınız kullanımdan kaldırıldı. Aşağıdaki örneğin kullanın:

mFAB.getDrawable().mutate().setTint(ContextCompat.getColor(this, R.color.colorAccent)); 
+0

Teşekkürler Vieuser, ben sadece – fab

+3

çalışır API sadece çalışır> 21 –

+2

Sadece API> 21 üzerinde çalışır. Daha düşük API'larda kullanmak istiyorsanız cevabımı kontrol edin –

2
Drawable fabDr= mFAB.getDrawable(); 
DrawableCompat.setTint(fabDr, Color.WHITE); 
4

yapabilirsiniz basit kullanım desteği-v4 içinde DrawableCompat şöyle:

Drawable drawable = mFloatingActionButton.getDrawable(); 
    // Wrap the drawable so that future tinting calls work 
    // on pre-v21 devices. Always use the returned drawable. 
    drawable = DrawableCompat.wrap(drawable); 

    // We can now set a tint 
    DrawableCompat.setTint(drawable, ContextCompat.getColor(this, R.color.white)); 
    // ...or a tint list 
    DrawableCompat.setTintList(drawable, ColorStateList.valueOf(ContextCompat.getColor(this, R.color.white))); 

    // ...and a different tint mode 
    DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_OVER); 
7

I varsayarak favoriteFab sizin FloatingActionButton olduğunu. Sen kullanabilirsiniz:

int color = ContextCompat.getColor(this, R.color.yellow); 
favoriteFab.getDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN); 
1

Bunun yerine DrawableCompat.setTintList() kullanabilirsiniz:

Drawable drawable = DrawableCompat.wrap(fab.getDrawable()); 
DrawableCompat.setTint(drawable, myColorInt); 
fab.setImageDrawable(drawable); 
İlgili konular