Получение названия цвета (из color. xml) на основе значения цвета на Android - PullRequest
0 голосов
/ 17 июня 2020

У меня есть следующее color.xml (сокращено)

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

Теперь я хочу получить имя на основе значения цвета, например, что-то, что вернет status_red, когда я передаю Color.rgb(255, 0, 0).

1 Ответ

0 голосов
/ 17 июня 2020

То, что вы хотите достичь, по моим сведениям, невозможно, и я просто дважды проверил документацию.

Но есть обходной путь :

<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 expectedColor = Color.rgb(98, 0, 238)
val typedArray = resources.obtainTypedArray(R.array.color_array)
repeat(typedArray.length()) { index ->
    val typedValue = TypedValue()
    typedArray.getValue(index, typedValue)
    val color = typedValue.data
    Log.i("Color", "expected: $expectedColor --- result: $color")
    if (color == expectedColor) {
        val resName = resources.getResourceEntryName(typedValue.resourceId)
        Log.i("Color", resName)
    }
}
typedArray.recycle()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...