Создайте новый цвет для рисования
Я пытаюсь преобразовать шестнадцатеричное значение в int, чтобы я мог создать новый цвет для рисования. Я не уверен, если это возможно, но согласно документации, это должно. Это прямо просит
public ColorDrawable (int color)
Добавлено на уровне API 1 Создает новый ColorDrawable с указанным цветом.
Параметры color Цвет для рисования.
Итак, мой код не работает, потому что я получаю ошибку Invalid int: "FF6666". Есть идеи?
int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
7 ответов
Поскольку вы говорите о гексе, вы должны начать с 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)
Для использования с ContextCompat и изменения цвета вы можете сделать что-то вроде этого:
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));
Так и должно быть...
ColorDrawable cd = new ColorDrawable(0xffff6666);
Обратите внимание, что я использовал 8 шестнадцатеричных цифр, а не 6 шестнадцатеричных. которые добавляют к прозрачности
Следуя приведенным выше советам, составьте краткое изложение этого вопроса:
ColorDrawable colorDrawable = new ColorDrawable (Color.parseColor ("# ce9b2c")); `
ColorDrawable colorDrawable = new ColorDrawable (0xFFCE9B2C); Обратите внимание, что есть 8 шестнадцатеричных цифр, а не 6 шестнадцатеричных, которые не работают. Дело все
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(mContext,R.color.default_color));
Выбор за вами!
Я думаю, что вы должны использовать:
public static int parseColor (String colorString)
Добавлено на уровне API 1. Разобрать строку цвета и вернуть соответствующий цвет-int. Если строка не может быть проанализирована, выдается исключение IllegalArgumentException. Поддерживаемые форматы: #RRGGBB #AARRGGBB красный, синий, зеленый, черный, белый, серый, голубой, пурпурный, желтый, светло-серый, темно-серый, серый, светло-серый, темно-серый, аква, фуксия, салатовый, бордовый, темно-синий, оливковый, фиолетовый, серебро, чирок
Вот как я преобразовал шестнадцатеричный цвет в int и применил к фону представления
Допустим, у нас есть цвет # 8080000.
1) Преобразование Hex в INT
int myColor = Color.parseColor("#808000");
2) Установить фон
view.setBackgroundColor(context.getColor(myColor));
Ксамарин/Мауи:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Window.SetBackgroundDrawable(new ColorDrawable(ColorExtensions.ToAndroid(Colors.Black)));
}