2010-01-29 12 views
26

Tengo problemas con el uso de EditText y el objeto de texto Spannable. En estos días, he leído documentos API unas diez veces, incluso no estoy seguro de entenderlo correctamente. Así que estoy buscando un tipo de ejemplo que me muestre cómo utilizar EditText y Spannable.¿Hay algún ejemplo sobre texto extendido e Spannable?

+5

http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring Esta es una respuesta perfecta para todos los que buscan hacer algo con Spannable y Textveiw. – JehandadK

+0

Ver [aquí] (http://stackoverflow.com/a/41953808/3681880) y [aquí] (http://androidcocktail.blogspot.com/2014/03/android-spannablestring-example.html) para algunos ejemplos . – Suragch

Respuesta

30

Dado que no especifica lo que no puede captar de la API, es difícil responder a sus preguntas (respuesta breve: vuelva a escribir su pregunta en una pregunta específica en lugar de en una general).

Un Spannable-ejemplo típico es algo como esto a su vez el texto seleccionado en un EditarTexto en cursiva:

Spannable str = mBodyText.getText(); 
if(mBodyText.getSelectionEnd() > mBodyText.getSelectionStart()) 
    str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 
         mBodyText.getSelectionStart(), mBodyText.getSelectionEnd(), 
         Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
else 
    str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 
       mBodyText.getSelectionEnd(), 
       mBodyText.getSelectionStart(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

Este es cortado y pegado de otra cosa, por lo que su-pastability directa podría haber sufrido, pero al menos muestra un ejemplo de trabajo de Spannable (en este caso, un StyleSpan). En la API, puede encontrar los otros tipos de tramos (notablemente ImageSpan, que es una pregunta común entre los nuevos droides convertidos).

+0

Esta respuesta es muy útil para mí, gracias. Pero todavía tengo un montón de problemas, tengo que resolverlos. Como describiste anteriormente, aquí hay un enlace para mostrar el problema a lo que me he enfrentado. http://stackoverflow.com/questions/2093111/when-some-text-is-copied-and-pasted-pasted-text-inherit-previous-text-style-it Si necesita más detalles sobre el problema, aquí hay otro enlace. http://code.google.com/p/blogaway/issues/detail?id=32 Probablemente, el enlace de arriba sea más informativo para descubrir cuál es el problema. – skysign

+0

Si bien el propósito de 'SpannableString' es bastante obvio, un ejemplo de' SpannedString' sería muy útil, ya que no tengo muy claro para qué lo uso y cómo crearlo en primer lugar. – AndreKR

9

Estoy empezando a tratar de resolverlo también, y parece innecesariamente complicado.

Aquí hay un método de trabajo para agregar NUEVO texto divisible a una vista existente. Quería agregar texto en color a una vista, y esta parecía ser la única forma de hacerlo.

Aunque se siente como un hack feo, puedes crear un TextView ficticio (no se muestra en ningún lugar) y darle un estilo al texto, luego anexar ese texto con estilo a donde quieras. El crédito es para iifuzz en anddev.org. Mi código es el siguiente manera:

spanbuffer = new TextView(context); 
    spanbuffer.setText(newText, TextView.BufferType.SPANNABLE); 
    Spannable s = (Spannable) spanbuffer.getText(); 
    s.setSpan(new ForegroundColorSpan(Color.RED), 0, newText.length() - 1, 0); 
    this.append(s); 

Creo que se supone que debes ser capaz de crear un nuevo texto spannable utilizando el SpannableFactory, así:

Spannable s = Spannable.Factory.getInstance().newSpannable(newText); 

pero no pude conseguir este texto para de hecho, muestra nuevos efectos de amplitud, así que me di por vencido.

Cuestiones relacionadas