Изменить цвет внутри strings.xml

Я новичок в android и хотел бы знать, как изменить цвет шрифта внутри файла strings.xml в теге строки.

Например, у меня есть:

<string name="hello_world">Hello world!</string> 

Я просто его показываю как красный и синий

Thanx

Solutions Collecting From Web of "Изменить цвет внутри strings.xml"

Попробуй это

Для красного цвета,

 <string name="hello_worldRed"><![CDATA[<b><font color=#FF0000>Hello world!</font></b>]]></string> 

Для синих,

 <string name="hello_worldBlue"><![CDATA[<b><font color=#0000FF>Hello world!</font></b>]]></string> 

В java-коде,

 //red color text TextView redColorTextView = (TextView)findViewById(R.id.redText); String redString = getResources().getString(R.string.hello_worldRed) redColorTextView.setText(Html.fromHtml(redString)); //Blue color text TextView blueColorTextView = (TextView)findViewById(R.id.blueText); String blueString = getResources().getString(R.string.hello_worldBlue) blueColorTextView.setText(Html.fromHtml(blueString)); 

Если вы хотите поддерживать форматирование текста из вашего файла strings.xml , вам нужно избегать тегов – или использовать раздел CDATA . В противном случае Android просто игнорирует их при чтении файла ресурсов.

например

 <string name="hello_world"> <![CDATA[ <p>This is a html-formatted string with <b>bold</b> and <i>italic</i> text</p> <p>This is another paragraph of the same string.</p> ]]> </string> 

ИЛИ

 String styledText = "This is <font color='red'>simple</font>."; textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE); 

Я бы использовал SpannableString для изменения цвета.

 int colorBlue = getResources().getColor(R.color.blue); String text = getString(R.string.text); SpannableString spannable = new SpannableString(text); // here we set the color spannable.setSpan(new ForegroundColorSpan(colorBlue), 0, text.length(), 0); 

ИЛИ вы можете попробовать это

Просто добавьте текст между тегами шрифта:

Для синего цвета

 <string name="hello_world"><font color='blue'>Hello world!</font></string> 

Или для красного цвета

 <string name="hello_world"><font color='red'>Hello world!</font></string> 
 <string name="hello_world"><font fgcolor="red">Hello</font> </font fgcolor="blue">world!</font></string> 

Но обратите внимание, что это работает только в относительно коротком списке встроенных цветов: aqua, black, blue, fuchsia, green, gray, lime, maroon, navy, olive, purple, red, silver, teal, white и yellow. См. https://stackoverflow.com/a/31655150/338479 , чтобы сделать это с произвольными цветами.

Для тех, кто хочет напрямую поместить цвет в String.xml и не хочет использовать цвет …

пример

 <string name="status_stop"><font fgcolor='#FF8E8E93'>Stopped</font></string> <!--gray--> <string name="status_running"><font fgcolor='#FF4CD964'>Running</font></string> <!--red--> <string name="status_error"><font fgcolor='#FFFF3B30'>Error</font></string> <!--green--> 

Как видите, есть серый, красный и зеленый цвета, есть 8 символов, первые два для прозрачности и другие для цвета.

пример

 This a description of color and transparency # FF FF3B30 transparency Color 

Примечание. Поместить цвет в текст в том же файле string.xml не будет работать в Android 6.0 и выше

Таблица непрозрачности

 100% — FF 99% — FC 98% — FA 97% — F7 96% — F5 95% — F2 94% — F0 93% — ED 92% — EB 91% — E8 90% — E6 89% — E3 88% — E0 87% — DE 86% — DB 85% — D9 84% — D6 83% — D4 82% — D1 81% — CF 80% — CC 79% — C9 78% — C7 77% — C4 76% — C2 75% — BF 74% — BD 73% — BA 72% — B8 71% — B5 70% — B3 69% — B0 68% — AD 67% — AB 66% — A8 65% — A6 64% — A3 63% — A1 62% — 9E 61% — 9C 60% — 99 59% — 96 58% — 94 57% — 91 56% — 8F 55% — 8C 54% — 8A 53% — 87 52% — 85 51% — 82 50% — 80 49% — 7D 48% — 7A 47% — 78 46% — 75 45% — 73 44% — 70 43% — 6E 42% — 6B 41% — 69 40% — 66 39% — 63 38% — 61 37% — 5E 36% — 5C 35% — 59 34% — 57 33% — 54 32% — 52 31% — 4F 30% — 4D 29% — 4A 28% — 47 27% — 45 26% — 42 25% — 40 24% — 3D 23% — 3B 22% — 38 21% — 36 20% — 33 19% — 30 18% — 2E 17% — 2B 16% — 29 15% — 26 14% — 24 13% — 21 12% — 1F 11% — 1C 10% — 1A 9% — 17 8% — 14 7% — 12 6% — 0F 5% — 0D 4% — 0A 3% — 08 2% — 05 1% — 03 0% — 00 

Ссылка: понимание цвета в Android (6 символов)


Обновление: 10 / OCT / 2016

Эта функция совместима со всеми версиями android, я не тестировал в android 7.0. Используйте эту функцию, чтобы получить цвет и установить в текстовом виде

Пример формата xml в строке и цветах файла

 <!-- /res/values/strings.xml --> <string name="status_stop">Stopped</string> <string name="status_running">Running</string> <string name="status_error">Error</string> <!-- /res/values/colors.xml --> <color name="status_stop">#8E8E93</color> <color name="status_running">#4CD964</color> <color name="status_error">#FF3B30</color> 

Функция для получения цвета из xml с проверкой для android 6.0 и выше

 public static int getColorWrapper(Context context, int id) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//if actual version is >= 6.0 return context.getColor(id); } else { //noinspection deprecation return context.getResources().getColor(id); } } 

Пример:

 TextView status = (TextView)findViewById(R.id.tvstatus); status.setTextColor(getColorWrapper(myactivity.this,R.color.status_stop)); 

Ссылка: getColor (int id) устарел на Android 6.0 Marshmallow (API 23)

Вы этого не делаете. strings.xml здесь, чтобы определить сырые текстовые сообщения. Вы должны (должны) использовать styles.xml для определения многоразовых визуальных стилей для применения к вашим виджетам.

Подумайте об этом как о хорошей практике для разделения проблем. Вы можете работать с визуальными стилями независимо от текстовых сообщений.

Вы не устанавливаете такие атрибуты в файлах типа strings.xml . Вам нужно установить его в свой код. Или (это лучшее решение) создайте стиль с цветами, которые вы хотите, и примените к своему TextView

Если вы хотите изменить цвет шрифта в файле string.xml , вы можете попробовать следующий код.

 <resources> <string name="hello_world"><font fgcolor="#ffff0000">Hello world!</font></string> </resources> 
 TextView TextView; TextView=(TextView)findviewbyId(R.id.yourtextid); TextView.setText(getResources().getString(R.hello_world);); TextView.setTextColor(Color.BLUE); OR TextView.setTextColor(Color.RED); 

Вы не можете написать или изменить значение String.xml во время выполнения или по коду.

Используйте CDATA в следующем порядке для форматирования текста

 <resources> <string name="app_name">DemoShareActionButton</string> <string name="intro_message"> <b> <![CDATA[ This sample shows you how a provide a context-sensitive ShareActionProvider. ]]> </b> </string> 

Просто добавьте любой тег, который вы хотите, перед <![CDATA[ и вы получите свой правильный результат.