我有以下color.xml
(缩短)
<color name="status_orange">#ff8000</color>
<color name="status_red">#ff0000</color>
现在,我希望根据颜色值获取名称,例如,当我传递color.rgb(255,0,0)
时,返回status_red
的内容。
据我所知,你想要达到的目的是不可能的,我只是重新检查了一下文档。
有一个解决办法,我的答案只是一个开端。 所以请注意你可以自己完成颜色值映射。 在价值比较中可能存在一些错误。
<resources>
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
<array name="color_array">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</array>
</resources>
val typedArray = resources.obtainTypedArray(R.array.color_array)
val theColorValueThatNeedsToBeMatched = ...
repeat(typedArray.length() - 1) { index ->
val value = TypedValue()
typedArray.getValue(index, value)
if (theColorValueThatNeedsToBeMatched == value.data) {
val resourceName = resources.getResourceName(value.resourceId)
}
}
typedArray.recycle()
请随意编辑此问题。