шестнадцатеричные строки в стиле CSS и Color.decode - PullRequest
21 голосов
/ 26 февраля 2010

эта статья предполагает, что вы можете использовать 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 Color?

Ответы [ 3 ]

46 голосов
/ 26 февраля 2010
Color c = Color.decode("0xFF0096");

или

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

или

Color c = new Color(0xFF0096);
9 голосов
/ 26 февраля 2010

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

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

1 голос
/ 23 июня 2015

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

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

Больше на Цвет # parseColor

...