oreo - android pie
Cambiar el color dentro de strings.xml (11)
Soy nuevo en Android, y me gustaría saber cómo puedo cambiar el color de la fuente dentro del archivo strings.xml en una etiqueta de cadena.
por ejemplo tengo:
<string name="hello_world">Hello world!</string>
Solo lo visualizo como rojo y azul
gracias
No establece dichos atributos en el tipo de archivos strings.xml
. Debes configurarlo en tu código. o (cuál es la mejor solución) crea el estilo con los colores que deseas y aplica a tu TextView
Para aquellos que quieren poner color en String.xml directamente y no quieren usar color ...
ejemplo
<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 ve hay gris, rojo y verde, hay 8 caracteres, los primeros dos para transparencia y otros para color.
Ejemplo
This a description of color and transparency
# FF FF3B30
Opacity Color
Nota: Ponga color en el texto en el mismo string.xml no funcionará en Android 6.0 y superior
Tabla de opacidad
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
Referencia: entender los colores en Android (6 caracteres)
Actualización: 10 / OCT / 2016
Esta función es compatible con todas las versiones de Android, no probé en Android 7.0. Use esta función para obtener color y establecer en textview
Ejemplo de formato xml en cadenas de archivos y colores
<!-- /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>
Función para obtener color de xml con validación para Android 6.0 y superior
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);
}
}
Ejemplo:
TextView status = (TextView)findViewById(R.id.tvstatus);
status.setTextColor(getColorWrapper(myactivity.this,R.color.status_stop));
Referencia: getColor (int id) obsoleto en Android 6.0 Marshmallow (API 23)
Prueba esto
Para el color rojo,
<string name="hello_worldRed"><![CDATA[<b><font color=#FF0000>Hello world!</font></b>]]></string>
Para azul,
<string name="hello_worldBlue"><![CDATA[<b><font color=#0000FF>Hello world!</font></b>]]></string>
En 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));
Si desea admitir el formato de texto desde su archivo strings.xml
, debe escapar de las etiquetas o usar una sección CDATA . De lo contrario, Android simplemente las ignora al leer el archivo de recursos.
p.ej
<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>
O
String styledText = "This is <font color=''red''>simple</font>.";
textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);
Si desea cambiar el color de la fuente dentro del archivo string.xml
, puede probar el siguiente código.
<resources>
<string name="hello_world"><font fgcolor="#ffff0000">Hello world!</font></string>
</resources>
Simplemente agregue su texto entre las etiquetas de fuente:
para el color azul
<string name="hello_world"><font color=''blue''>Hello world!</font></string>
o para el color rojo
<string name="hello_world"><font color=''red''>Hello world!</font></string>
Tu no strings.xml
está aquí para definir los mensajes de texto sin formato. Debería (debe) usar styles.xml
para definir estilos visuales reutilizables para aplicar a sus widgets.
Considere una buena práctica separar las preocupaciones. Puede trabajar en los estilos visuales independientemente de los mensajes de texto.
Use CDATA de la siguiente manera para formatear su texto
TextView TextView;
TextView=(TextView)findviewbyId(R.id.yourtextid);
TextView.setText(getResources().getString(R.hello_world););
TextView.setTextColor(Color.BLUE);
OR
TextView.setTextColor(Color.RED);
Simplemente agregue cualquier etiqueta que desee antes del <![CDATA[
y obtendrá la salida adecuada.
Yo usaría SpannableString
para cambiar el color.
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);
O puede intentar this
<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>
No puede escribir ni cambiar el valor de String.xml en Run Time o por código.
<string name="hello_world"><font fgcolor="red">Hello</font>
</font fgcolor="blue">world!</font></string>
Pero tenga en cuenta que esto solo funciona en una lista relativamente corta de colores incorporados: aguamarina, negro, azul, fucsia, verde, gris, lima, granate, azul marino, oliva, púrpura, rojo, plateado, verde azulado, blanco y amarillo. Consulte https://.com/a/31655150/338479 para ver una forma de hacerlo con colores arbitrarios.