提问者:小点点

Android上基于颜色值获取颜色名称(从color.xml)


我有以下color.xml(缩短)

<color name="status_orange">#ff8000</color>
<color name="status_red">#ff0000</color>

现在,我希望根据颜色值获取名称,例如,当我传递color.rgb(255,0,0)时,返回status_red的内容。


共1个答案

匿名用户

据我所知,你想要达到的目的是不可能的,我只是重新检查了一下文档。

有一个解决办法,我的答案只是一个开端。 所以请注意你可以自己完成颜色值映射。 在价值比较中可能存在一些错误。

<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()

请随意编辑此问题。