it-swarm.com.ru

шестнадцатеричные строки в стиле 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 Color?

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

или же

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

или же

Color c = new Color(0xFF0096);
45
Matthew Flaschen

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

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

9
codaddict

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

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

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

1
Ehtesh Choudhury