【发布时间】:2013-11-08 22:22:30
【问题描述】:
在Java中,如果你写
imageView.setBackgroundColor(R.color.abs__background_holo_dark);
Lint 会告诉您应该传递一个已解析的颜色,例如 0xAARRGGBB,而不是 R 资源 ID。他们是怎么做到的?
我想实现相反的效果:我想强制一个整数参数严格地是一个 R 资源 ID。反过来可以吗?
谢谢。
【问题讨论】:
-
您使用了错误的方法:ImageView.setBackgroundColor 旨在提供 ARGB 编码的颜色整数(而不是资源标识符号)。 ImageView.setBackgroundResource 可能是您正在寻找的方法。但是,没有办法强制在颜色整数上使用“R”资源标识符,因为它们属于同一类型,Java 无法区分。
-
是的,我相信我的 0xAARRGGBB 是你所说的 ARGB 编码颜色整数。我只是想知道是否有一种机制可以执行此类强制执行;像 @nonnull 或 @nullable 一样,这些不是标准的 Java,但仍然可以触发 lint 消息,以便在使用我的 API 时更有效地指导其他开发人员。
-
鉴于您在问题中的示例,lint 已经做得很好了。它正确地识别出您误用了“setBackgroundColor”方法,因为它不小心给它提供了资源标识符而不是颜色整数。现在我不太确定我是否正确理解了您的问题,因为您应该使用 setBackgroundResource 而不是 setBackgroundColor。如果您觉得缺少某些“lint”功能,您可以将其作为功能请求报告给 Android 开发团队:b.android.com
标签: android