android imageview在xml中设置的色调会以编程方式覆盖DrawableCompat上的色调集

时间:2016-08-10 22:46:39

标签: android android-layout android-support-library android-drawable

所以另一天,另一个问题!我设置了一个带有色调的ImageView,如下所示:

<ImageView
    android:id="@+id/image_money"
    android:layout_width="25dp"
    android:layout_height="25dp"
    android:padding="3dp"
    android:src="@drawable/ic_money_icon"
    android:tint="#c7c7c7"/>

我需要恢复或设置tintColor,所以我使用DrawableCompat如下:

Drawable imagem = holder.view.getContext().getResources().getDrawable(R.drawable.ic_money_icon);
imagem = DrawableCompat.wrap(imagem);
imagem = imagem.mutate();
DrawableCompat.setTint(imagem,Color.parseColor("#43a085"));
holder.imageDebito.setImageDrawable(imagem);

我检查了imagem上的位图,看起来应该是我应该设置的颜色,但是当应用于ImageView imageDebito时,它会恢复到XML上的色调集。如果我拍摄视图中未使用的其他图像,应用色调,然后在ImageView上设置它,它从XML获得相同的色调...我尝试设置setImageTintList(),但是它在API级别17上不可用......

因此,我需要删除tint属性,或者通过xml上的ImageView对图像强制执行色调。

1 个答案:

答案 0 :(得分:1)

使用setColorFilter()方法。

Drawable myIcon = getResources().getDrawable( R.drawable.button ); 
ColorFilter filter = new LightingColorFilter( Color.BLACK, Color.BLACK);
myIcon.setColorFilter(filter);

编辑:只是改进了格式......