Создайте новый цвет.
Я пытаюсь преобразовать шестнадцатеричное значение в int, чтобы я мог создать новый цвет. Я не уверен, что это возможно, но в соответствии с документацией это должно быть. Он просто просит
общедоступный ColorDrawable (цвет int)
Добавлен в API-уровень 1 Создает новый ColorDrawable с указанным цвет.
Параметры цвет Цвет рисунка.
Итак, мой код не работает, потому что я получаю ошибку Invalid int: "FF6666". Любые идеи?
int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
Ответы
Ответ 1
Поскольку вы говорите об hex, вам нужно начинать с 0x
и не забывайте непрозрачность.
Итак, в основном: 0xFFFF6666
ColorDrawable cd = new ColorDrawable(0xFFFF6666);
Вы также можете создать новый файл colors.xml в /res и определить цвета, например:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="mycolor">#FF6666</color>
</resources>
и просто получите цвет, определенный в R.color.mycolor
getResources().getColor(R.color.mycolor)
Ответ 2
Это должно быть так...
ColorDrawable cd = new ColorDrawable(0xffff6666);
Примечание. Я использовал 8 шестнадцатеричных цифр, а не 6 шестнадцатеричных цифр. которые добавить к прозрачности
Ответ 3
Для использования с ContextCompat и повторного использования цвета вы можете сделать что-то вроде этого:
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));
Ответ 4
Я думаю, вы должны использовать:
public static int parseColor (String colorString)
Добавлен в уровень API 1 Разбор строки цвета и возврат соответствующий цвет-int. Если строка не может быть проанализирована, Исключение исключения IllegalArgumentException. Поддерживаемые форматы: #RRGGBB #AARRGGBB красный, синий, зеленый, черный, белый, серый, голубой, пурпурный, желтый, светлый, темно-серый, серый, светлый, темный, аква, фушия, лайм, бордовый, темно-синий, оливковый, фиолетовый, серебристый, чирок
Ответ 5
Следуя приведенным выше советам, давайте резюме этого вопроса:
-
ColorDrawable colorDrawable = новый ColorDrawable ( Color.parseColor ( "# ce9b2c" ));
-
ColorDrawable colorDrawable = новый ColorDrawable (0xFFCE9B2C);
Обратите внимание, что есть 8 шестнадцатеричных цифр, а не 6 шестнадцатеричных цифр, которые не работают. Случай все
-
ColorDrawable colorDrawable = новый ColorDrawable (ContextCompat.getColor(mContext, R.color.default_color));
Выбор до вас!