2013-06-11 3 views
0

Мне нужно знать, как получить код для цвета переднего плана, если я знаю шестнадцатеричный цвет для этого цвета.Как получить цвет переднего плана из шестнадцатеричного цвета?

<string name="name">Asavbasb <font fgcolor="#33b5e5">look</font></string> 

Это код моего цвета в шестнадцатеричном # 33b5e5, но если я использую его в fgcolor="33b5e5", выделенный текст белый, а не синий, так что мой вопрос, как я могу получить код для этого цвета переднего плана?

+0

Что вы подразумеваете под цветным фоном или фоном. Цветовой код Hex - это код цвета. Вы хотите красную, зеленую, синюю комбинацию? –

+0

Нет, мне нужно изменить цвет моей строки (текста). Вы можете увидеть его в теге , но есть только опция fgcolor и мой шестнадцатеричный код # 33b5e5 для синего цвета, но если я использую этот код в fgcolor, моя строка (текст) будет белой, а не голубой. – Adam

+0

Например, если я использую мой текст красный, но мне нужно сделать текст синим в шестнадцатеричном цветовом коде # 33b5e5. – Adam

ответ

1

Вместо того, чтобы не использовать функцию fromHTML?

Что-то вроде:

myTextView.setText(Html.fromHtml("Asavbasb <font fgcolor='#33b5e5'>look</font>")); 

Или, если вам действительно нужен код цвета, вы можете получить его с Color.parseColor(String);

+0

Вы не понимаете моего вопроса, проблема в том, что мне нужно знать, как получить код fgcolor для этого шестнадцатеричного цветового кода: # 33b5e5. Потому что, если я использую fgcolor = '# 33b5e5', мой текст должен быть синим, но при условии, что текст белый, и я не понимаю, почему. – Adam

+0

Обновлен ответ с добавлением Color.parseColor – gunar

0

это, как вы можете сделать, чтобы создать цвет из шестнадцатеричной строки и влияют на его к TextView:

final int color = Color.parseColor("#33b5e5"); 
final TextView text = (TextView) findViewById(R.id.text); 
text.setTextColor(color); 
1

вы пробовали изменить свой цвет на fgcolor="#ff33b5e5"?

Я думаю, что при использовании встроенного в Android цвета вам нужно объявить альфа-канал.

+0

К сожалению, это сломалось в 4.x.См. Объяснение и работу TWiStErRob в http://stackoverflow.com/a/11577658/338479 –

0

До 4.x, вы можете сделать это:

<string name="error"><font fgcolor="#ff33b5e5">Error!</font></string> 

Однако ошибка https://code.google.com/p/android/issues/detail?id=58192 сломал эту функцию, поскольку она представила целое синтаксический анализатор, который не может обрабатывать числа с наивысшим битом, и, к сожалению, вы не может опустить непрозрачность части цвета (которую большинство людей предпочло бы установить в ff, как в этом примере.)

Я только вчера узнал умную работу. То, что вы делаете, отрицает значение шестнадцатеричного цвета в дополнении к двум. Как вы это делаете, зависит от вашего шестнадцатеричного калькулятора, но самый простой способ - вычесть ваш цвет с 0x100000000. В вашем случае это приведет к 0x100000000 - 0xff33b5e5 = 0xcc4a1b. (Или вы можете просто инвертировать его, например, 00cc4a1a, который будет достаточно близко). Затем вы отрицаете это со знаком минуса:

<string name="error"><font fgcolor="-#cc4a1b">Error!</font></string> 

и voilla! у вас есть желаемый цвет.

Престижность TWiStErRob для выяснения этого в https://stackoverflow.com/a/11577658/338479

ETA: Я только что обнаружил, что это приведет к сбою приложения, если вы делаете это в системе 2.x; он выбрасывает исключение NumberFormat