android - 如何检查 Int 值是@ColorRes 还是@ColorInt?
问题描述
我有一种方法可以传递一个 int 颜色值
fun setTint(color: Int) {
}
我可以同时R.color.black
传给Color.BLACK
它。在我想检查它是否是@ColorRes
或的方法中@ColorInt
。我该怎么做 ?
解决方案
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;
}
}
推荐阅读
- c# - C# 将双精度和整数添加到列表中
- javascript - 如何制作可以用 x 按钮关闭的广告横幅?
- spring-mvc - 如何在 webdav 中显示需要在 jsp 中进行身份验证的图像文件?
- rust - 使用 serde 从字符串毫秒时间戳反序列化 DateTime
- django - 在管理视图中保存非常简单模型的更改会在 GoogleComputeEngine 上引发几个错误,为什么?
- azure-devops - 如何使用发布管道在预发布视图中部署 Nuget
- sql - 如何在 linux shell 的 sql 查询中使用“%”字符?
- uisegmentedcontrol - 为 UISegmentedControl 设置彩色文本范围
- linux - 如何输入带有前缀'-t'的目录
- python-3.x - 谷歌应用引擎 - 应用因长期部署而变得不健康