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

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

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

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

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

Я просто хочу, чтобы он отображался как красный и синий

Thanx

4b9b3361

Ответ 1

Попробуйте это

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

<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));

Ответ 2

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

пример

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

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

пример

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

Примечание. Цвет текста в той же строке .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 октября 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)

Ответ 3

Если вы хотите поддерживать текстовое форматирование из вашего файла 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);

Ответ 4

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

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

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

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

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

Ответ 5

Я бы использовал 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);

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

Ответ 6

<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, и желтый. См. fooobar.com/questions/210177/..., чтобы сделать это с произвольными цветами.

Ответ 7

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

<resources>
   <string name="hello_world"><font fgcolor="#ffff0000">Hello world!</font></string>
</resources>

Ответ 8

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

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

Ответ 9

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

Ответ 10

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 во время выполнения или по коду.

Ответ 11

Используйте формат 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[, и вы получите свой правильный результат.