Подтвердить что ты не робот

Android получает цвет как строковое значение

Если я определил цвет в ресурсах

<resources>
    <color name="someColor">#123456</color>
</resources>

можно установить цвет по его идентификатору, например

view.setTextColor(R.color.someColor);

Можно ли также получить значение цветовой строки из colors.xml?

Что-то вроде

colorStr = getColor(R.color.someColor);
// -> colorStr = "#123456"

Если да, может ли кто-нибудь привести пример?

Спасибо

4b9b3361

Ответ 1

Это ваш ответ

colorStr=getResources().getString(R.color.someColor);

вы получите

 colorStr = "#123456"

Ответ 2

Просто ради простой copypasta:

"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color));

Или, если вы хотите его без прозрачности:

"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color) & 0x00ffffff);

Ответ 3

Ответы, приведенные выше, не обновляются.

Пожалуйста, попробуйте этот

String colorHex = "#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.dark_sky_blue) & 0x00ffffff);

Ответ 4

Причина getResources().getColor нужна api > 23. Итак, это лучше: Просто для удобства копирования и вставки:

Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) );

Или если вы хотите его без прозрачности: `

Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) & 0x00ffffff );

Ответ 5

Для API выше 21 вы можете использовать

getString(R.color.color_name);

Это вернет цвет в строчном формате. Чтобы преобразовать это в цвет в целочисленном формате (иногда принимаются только целые числа), тогда:

Color.parseColor(getString(R.color.color_name));

Вышеприведенное выражение возвращает целочисленный эквивалент цвета, определенного в файле color.xml

Ответ 6

Я не думаю, что для этого есть стандартная функциональность. Тем не менее вы можете повернуть возврат в значение от getColor() до шестнадцатеричного и превратить шестнадцатеричное значение в строку.

hex 123456 = int 1193046;

Ответ 7

Вот как я это сделал:

String color = "#" + Integer.toHexString(ContextCompat.getColor
(getApplicationContext(), R.color.yourColor) & 0x00ffffff);

Ответ 8

Все решения, использующие Integer.toHexString(), разбиваются, если в шестнадцатеричной строке будут указатели на нули. Цвета, такие как #0affff, приведут к #affff. Используйте это вместо:

String.format("#%06x", ContextCompat.getColor(this, R.color.your_color) & 0xffffff)

или с альфой:

String.format("#%08x", ContextCompat.getColor(this, R.color.your_color) & 0xffffffff)