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

CSS-шестнадцатеричные строки и Color.decode

в этой статье предлагается использовать Color c = Color.decode("FF0096");, однако это, по понятным причинам, вызывает исключение

Caused by: java.lang.NumberFormatException: For input string: "FF0096"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:449)
    at java.lang.Integer.valueOf(Integer.java:528)
    at java.lang.Integer.decode(Integer.java:958)
    at java.awt.Color.decode(Color.java:707)

Каков наилучший способ преобразования строки в формате "# FF0096" или "FF0096" в цвет java awt?

4b9b3361

Ответ 1

Color c = Color.decode("0xFF0096");

или

Color c = Color.decode("#FF0096");

или

Color c = new Color(0xFF0096);

Ответ 2

Метод Color.decode выдает NumberFormatException если указанная строка не может быть интерпретирована как десятичное, восьмеричное или шестнадцатеричное целое число

Строка "FF0096" без префикс 0 или 0x будет интерпретироваться как базовое 10-представление, которое не работает.

Ответ 3

Я искал аналогичный способ сделать это в Android. По какой-то причине я не смог найти Color.decode(), поэтому я искал альтернативу. Если вы хотите использовать шестую строку для представления цвета на Android, вы можете сделать следующее:

String hexColor = "#142b44";
View row = findViewById(R.id.row);
int color = Color.parseColor(hexColor);
row0.setBackgroundColor(color);

Подробнее в Цвет # parseColor