2016-07-05 156 views
-1

我有一個問題。 爲什麼當我使用爲什麼DrawableCompat.setTint()方法不正確?

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),是工作,如果我提供了一個顏色資源註解。越來越混亂。如果不是,則資源顏色被忽略。

+0

'tint:\t用於着色此drawable的顏色,所以它需要32位長的int顏色,而不是資源ID – pskink

+0

Btw'@ ColorInt'是顏色值,而'@ ColorRes'是資源ID。 – StuStirling

回答

2

您必須在使用它之前解析顏色。 R.color.white只是一個指向R文件中的id的指針。

通過調用getResources().getColor(R.color.white)可以解析顏色。