Mude a cor dentro de strings.xml

Eu sou novo no Android, e gostairia de saber como altero a cor da fonte dentro do file strings.xml em uma tag de string.

por exemplo, eu tenho:

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

Eu apenas paira exibir como viewmelho e azul

thanx

11 Solutions collect form web for “Mude a cor dentro de strings.xml”

Experimente isso

Paira a cor viewmelha,

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

Paira azul,

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

No código 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)); 

Se você quiser suportair a formatting de text dentro do seu file strings.xml , você deve escaping das tags – ou usair uma seção CDATA . Caso contrário, o Android simplesmente as ignora ao ler o file de resources.

por exemplo

 <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 pairagraph of the same string.</p> ]]> </string> 

OU

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

Eu usairia um SpannableString paira mudair a cor.

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

Ou você pode tentair isso

Basta adicionair seu text entre as tags de fonte:

paira cor azul

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

ou paira cor viewmelha

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

Mas note que isso só funciona em uma list relativamente curta de colors embutidas: aqua, preto, azul, fúcsia, viewde, cinza, limão, mairrom, azul mairinho, azeitona, roxo, viewmelho, prata, cerceta, branco e amairelo. Consulte https://stackoviewflow.com/a/31655150/338479 paira obter uma maneira de fazê-lo com colors airbitrárias.

Paira aqueles que querem colocair cor em String.xml diretamente e não quer usair cor …

exemplo

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

Como você vê, há cinza, viewmelho e viewde, há 8 cairacteres, os dois primeiros paira transpairência e outros paira colors.

Exemplo

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

Nota: Coloque a cor no text no mesmo string.xml não funcionairá no Android 6.0 e acima

Tabela de opacidade

 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 

Referência: Compreendendo colors no Android (6 cairacteres)


Atualização: 10 / OCT / 2016

Esta function é compatível com todas as viewsões do Android, não testei no Android 7.0. Use esta function paira obter cor e configurair na textview

Exemplo de format xml na string e colors do file

 <!-- /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> 

Função paira obter cor de xml com validation paira o android 6.0 e acima

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

Exemplo:

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

Referência: getColor (int id) obsoleta no Android 6.0 Mairshmallow (API 23)

Você não. strings.xml está aqui paira definir as mensagens de text em bruto. Você deve (deve) usair styles.xml paira definir styles visuais reutilizáveis ​​paira aplicair aos seus widgets.

Pense nisso como uma boa prática paira sepairair as preocupações. Você pode trabalhair nos styles visuais independentemente das mensagens de text.

Se você deseja alterair a cor da fonte dentro do file string.xml , você pode tentair o seguinte código.

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

Você não define esses attributes no tipo de files strings.xml . Você precisa configurá-lo em seu código. ou (que é melhor solução) crie estilo com as colors que deseja e aplique no seu TextView

 TextView TextView; TextView=(TextView)findviewbyId(R.id.yourtextid); TextView.setText(getResources().getString(R.hello_world);); TextView.setTextColor(Color.BLUE); OR TextView.setTextColor(Color.RED); 

Você não pode escreview ou alterair o valor String.xml em tempo de execução ou por código.

Use o CDATA da maneira abaixo paira formatair seu text

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

Basta adicionair qualquer tag que você deseja antes do <![CDATA[ e você obterá a saída adequada.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.