首页 > 解决方案 > 如何检查 Int 值是@ColorRes 还是@ColorInt?

问题描述

我有一种方法可以传递一个 int 颜色值

fun setTint(color: Int) {

}

我可以同时R.color.black传给Color.BLACK它。在我想检查它是否是@ColorRes或的方法中@ColorInt。我该怎么做 ?

标签: android

解决方案


Android 资源 ID 是 32 位数字,而 Android 颜色可以编码为 32 位整数或 64 位长。

因此,首先检查该数字是否是有效的颜色资源是我的方法。如果它不是资源,则可以将其视为编码颜色。

if(isColorResource(value)) Log.d(TAG,"Found color resource");
else Log.d(TAG,"Found color value");
public boolean isColorResource(int value) {
        try {
            ResourcesCompat.getColor(getResources(), value, null);
            return true;
        } catch (Resources.NotFoundException e) {
            return false;
        }

    }

推荐阅读