Tengo los siguientes datos de entrada en Cadena: "Hola # este # es # muestra # texto".Eliminar caracteres de la secuencia de caracteres intercambiable
Establece el color de fondo para todos los elementos entre # caracteres. Esto es lo que obtuve hasta ahora:
public static CharSequence colorBackground(CharSequence text) {
Pattern pattern = Pattern.compile("#(.*?)#");
Spannable spannable = new SpannableString(text);
if(pattern != null)
{
Matcher matcher = pattern.matcher(text);
while(matcher.find())
{
int start = matcher.start();
int end = matcher.end();
CharacterStyle span = new BackgroundColorSpan(0xFF404040);
spannable.setSpan(span, start, end, 0);
}
}
return spannable;
}
Establecer el color de fondo funciona, pero los caracteres de marcador de posición # también tienen un estilo. ¿Cómo eliminarlos antes de devolver el resultado, porque el método ReplaceAll no existe para CharSequence?
Utilizo esta función para aplicar estilo a las filas de TextView en ListView. Se siente un poco más lento en el emulador después de agregar esta función de estilo. Tal vez debería abordarlo de alguna otra manera, por ej. usar una vista de texto personalizada con función de dibujo personalizado?
Gracias por su tiempo, los Spannables son un poco confusos de trabajar al principio. Al menos funciona más rápido que desde HTML. – joshas