¿Hay alguna forma de establecer el color de un recurso de cadena en Android? Quiero decir, sé que puedo usar algunas etiquetas html para cambiar el estilo de cadena (o subcadenas) pero no he encontrado ninguna para cambiar el color. He visto otras soluciones aquí en stackoverflow, como pasar la cadena a Html.fromHtml (cadena) antes de configurar el texto, pero quiero hacerlo en el editor de recursos de cadenas. ¿Cualquier posibilidad?Cambiar el color de la palabra en la cadena de recursos
Respuesta
Por lo que yo sé que no es posible. 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);
Spannable es realmente agradable. Puede establecer think like fontseize y esas cosas allí y simplemente adjuntarlo a una vista de texto. La ventaja es que puede tener diferentes colores en una vista.
Edit: Ok, si solo quiere establecer el color de la solución mencionada anteriormente, yo soy el camino a seguir.
Las cadenas en sí no tienen color, pero puede cambiar el color del texto en el texto en el que aparecen. Consulte el textview documentation, pero hay 2 formas de hacerlo.
XML
android:textColor
Código
setTextColor(int)
Gracias por la respuesta. Creo que no estaba bien formulado. Me referí a cambiar el color de una subcadena en la cadena de recursos. Lo siento por eso. – Notbad
Parece que this método está funcionando:
<string name="some_text">this is <font fgcolor="#ffff0000">red</font></string>
Parece que ha dejado de funcionar en 4.3 (posiblemente antes) - ¿Alguien sabe qué pasa? –
[Por qué dejó de funcionar] (https://code.google.com/p/android/issues/detail?id=58192), [cómo dejó de funcionar] (https://github.com/android/platform_frameworks_base/commit/a8f6d5f0720f400b6f59b0809aaefea83c5f51d4), [una buena solución/implica código: (] (http://stackoverflow.com/a/18839246/253468) y una solución fea: para cualquier color arriba '7fffffff' aplique lo siguiente:' 'ponga' ff6890a5' en una calculadora (opti onally convertir a decimal primero) y voltear el signo, luego (opcionalmente volver a convertir a hexa) tomar los últimos 8 dígitos hexadecimales y usar ''. – TWiStErRob
OK, ahora ** QUE ** fue malditamente brillante. Funcionó perfectamente. Muchas gracias y ojalá hubiera sabido sobre esto hace mucho tiempo. –
me han hecho recientemente una solución flexible para este problema. Me permite agregar fácilmente múltiples estilos a subcadenas utilizando el método de encadenamiento. Hace uso de SpannableString. Cuando quiera darle un color a cierta subcadena, puede usar ForegroundColorSpan.
public StyledString putColor(String subString, @ColorRes int colorRes){
if(getStartEnd(subString)){
int color = ColorUtil.getColor(context, colorRes);
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(color);
fullStringBuilder.setSpan(foregroundColorSpan, startingIndex, endingIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return this;
}
Para ver el código completo, ver gist.
Si bien un enlace es excelente, por favor [proporcione contexto a su (s) enlace (es)] (http://meta.stackoverflow.com/a/8259/169503), ya que una * respuesta * en realidad debería contener una respuesta. Tenga en cuenta que se * poco más que un enlace a un sitio externo * es una posible razón de por [¿Por qué y cómo se eliminan algunas respuestas?] (Http://stackoverflow.com/help/deleted-answers). – Jan
- 1. cambiar el color específico de la palabra en wordcloud
- 2. ¿Cómo cambiar el color de la palabra mal escrita resaltada?
- 3. CSS para cambiar el color de la última palabra en h1
- 4. Cambiar el color de la selección
- 5. Cambiar el color de la celda JTable
- 6. Cambiar el valor de la primera letra de cada palabra
- 7. ¿Cómo especificar el color de fondo en los recursos de la lista de estados de color?
- 8. Javascript encontrar el índice de la palabra en una cadena (no parte de la palabra)
- 9. Reemplazar la última palabra en la cadena
- 10. Regex encuentra la palabra en la cadena
- 11. Establecer la cadena de recursos en javascript
- 12. cadena transversal C: obtenga la última palabra de una cadena
- 13. Cambiar el color de la barra de acciones en Android
- 14. Cambiar el color de la barra de título en WinForm
- 15. Cambiar el color de la barra de progreso en Android
- 16. Cambiar el color de fondo de líneas en la pila
- 17. Cómo cambiar el color de la cara en Three.js
- 18. Cambiar el color de la imagen en javascript
- 19. ¿Cómo cambiar el color de la consola en texto sublime?
- 20. Cambiar el color de la celda en diferentes valores - Gridview
- 21. ¿Cómo cambiar el color de fondo en la búsqueda Eclipse
- 22. Cambiar el color de la línea en pestañas - ActionBarSherlock
- 23. Cómo cambiar el color de la pestaña 'underbar' en actionbarsherlock
- 24. Cambiar el color de la IU en Eclipse
- 25. Cambiar el color y el aspecto de la flecha desplegable
- 26. Cómo cambiar el color de la fuente de color/texto de la UIBarButtonItem en la barra de navegación
- 27. Cambiar el color de la libración de nav-pestañas
- 28. Cambiar el color de UITableViewCellAccessoryDisclosureIndicator
- 29. ¿Puedo cambiar el color de fondo de la consola Firebug?
- 30. Cómo cambiar el color de fondo de la vista enfocada
Veo, si este es el camino a seguir, podría crear mis recursos de cadena con algún "código" para saber dónde comienza y dónde termina la subcadena que quiero cambiar, y procesarla de la manera que expuso. Gracias. – Notbad
'int colorBlue = getResources(). GetColor (R.color.blue); .... spannable.setSpan (nuevo ForegroundColorSpan (colorBlue), 0, text.length(), 0); 'se puede reemplazar por una sola línea como esta' spannable.setSpan (new ForegroundColorSpan (R.color.blue). .'' –
Además, yo personalmente usaría las constantes de indicador declaradas en la clase activable en lugar de la codificación dura 0 durante la llamada. Hace que el código sea más legible y mantenible. Solo algo que haría ... –