La mejor manera de obtener una SpannableString de un SpannableStringBuilder
Estoy trabajando en un analizador wiki-like que crea espacios para un conjunto de fichas de marcado. Está funcionando, pero dentro del iterador de token frecuentemente necesito convertir los resultados parciales en un SpannableStringBuilder
a un SpannableString
. Esto se llama con bastante frecuencia, por lo que estoy después de la solución más eficiente para hacerlo, y evitar la creación de objetos adicionales.
En este momento estoy usando;
- Android SpannableString establecer fondo detrás de parte del texto
- Establecer una cadena spannable no funciona en una simple Textview
- ¿Cómo puedo utilizar onTouchListeners en cada palabra en un TextView?
- Java.lang.ClassCastException: android.text.SpannableStringBuilder no se puede convertir en java.util.ArrayList
- Ajuste de la alineación del texto mediante SpannableString
SpannableStringBuilder stuff=complex_routine_that_builds_it(); SpannableString result=SpannableString.valueOf(stuff);
Sin embargo, esta llamada de valueOf
crea internamente un tipo de SpannableString
desde cero, haciendo un toString
y un loop para copiar SpannableString
asignados.
Como el nombre de SpannableStringBuilder
sugiere, creo que quizás hay una manera más rápida de obtener SpannableString
del constructor. ¿Es verdad?
- El método draw () de ReplacementSpan no se llama
- Cómo hacer que RelativeSizeSpan se alinee a la parte superior
- StringIndexOutOfBoundsException de SpannableStringInternal
- Cómo configurar la fuente personalizada para palabra en un texto TextView
- Las extensiones de vínculo se pierden de la conversión de ListView
- Incorpore la línea que envuelve al usar bulletspan
- El texto se ensucia con ImageSpan en EditText
- SpannableString: ¿Es posible aplicar dos o más RelativeSizeSpans?
No hay necesidad de convertir SpannableStringBuilder
a SpannableString
cuando se puede utilizar directamente, como en un TextView
:
SpannableStringBuilder stuff = complex_routine_that_builds_it(); textView.setText(stuff);
Como la pregunta ya mostró, usted podría hacer la conversión si usted tenía absolutamente a por
SpannableStringBuilder stuff = complex_routine_that_builds_it(); SpannableString result = SpannableString.valueOf(stuff);
Pero usted debe considerar por qué incluso tendría que hacer esa conversión? Simplemente utilice el SpannableStringBuilder
original.
SpannableString
vs SpannableStringBuilder
La diferencia entre estos dos es similar a la diferencia entre String
y StringBuilder
. Una String
es inmutable, pero puede cambiar el texto en StringBuilder
.
Del mismo modo, el texto en un SpannableString
es inmutable mientras que el texto en un SpannableStringBuilder
es cambiable. Es importante notar, sin embargo, que esto sólo se aplica al texto. Los tramos de ambos (incluso SpannableString
) se pueden cambiar.
Relacionado
- Extensión de Spanned, SpannedString, Spannable, SpannableString y CharSequence de Android
- Actualizar los contenidos de recyclerview fallan en la hoja inferior
- Android: Regresa a la actividad anterior sin llamar a finish ()