为什么DrawableCompat.setTint()方法不正确?

时间:2016-07-05 11:07:56

标签: android drawable android-appcompat tint

我有一个问题。 我何时使用

Drawable drawable = getResources().getDrawable(R.drawable.some_drawable);
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable.mutate(), getResources().getColor(R.color.white));

不起作用,当我使用

Drawable drawable = getResources().getDrawable(R.drawable.some_drawable);
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable.mutate(), R.color.white);

正在运作?

在文档中就像

public static void setTint(@NonNull Drawable drawable, @ColorInt int tint){}

所以意味着我需要提供一个资源,而不是一个int。

谢谢。

编辑:

如果我提供了颜色资源,我会看到我的函数是否使用@ColorInt (..., @ColorInt int color)进行注释。变得更加混乱。如果不是,则忽略资源颜色。

1 个答案:

答案 0 :(得分:2)

使用前必须先解析颜色。 R.color.white只是指向R文件中id的指针。

通过调用getResources().getColor(R.color.white)解析颜色。