2010-01-29 9 views
26

Ho difficoltà a utilizzare l'oggetto di testo EditText e Spannable. In questi giorni ho letto documenti API circa dieci volte, anche se non sono sicuro di averlo capito correttamente. Quindi sto cercando un esempio che mostri come utilizzare EditText e Spannable.Esiste qualche esempio sul testo con spanning e spannable

+5

http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring Questa è una risposta perfetta per tutti coloro che desiderano fare qualsiasi cosa con Spannable e Textveiw. – JehandadK

+0

Vedere [here] (http://stackoverflow.com/a/41953808/3681880) e [qui] (http://androidcocktail.blogspot.com/2014/03/android-spannablestring-example.html) per alcuni esempi . – Suragch

risposta

30

Poiché non si specifica ciò che non si può cogliere dall'API, è difficile rispondere alle proprie domande (risposta breve: riscrivi la domanda su una domanda specifica piuttosto che su una domanda generale).

Un tipico Spannable-esempio è qualcosa di simile per trasformare il testo selezionato in un EditText in italico:

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); 

Questo è tagliato e incollato da qualcosa d'altro, così il vostro-pastability diretta potrebbe aver sofferto, ma mostra almeno un esempio funzionante di Spannable (in questo caso uno StyleSpan). Nell'API è possibile trovare gli altri tipi di span (in particolare ImageSpan, che è una domanda comune tra i droidi convertiti di recente).

+0

Questa risposta è molto utile per me, grazie. Ma ho ancora un sacco di problemi, devo risolvere. Come descritto sopra, ecco un link per mostrare il problema su cosa ho affrontato. http://stackoverflow.com/questions/2093111/when-some-text-is-copied-and-pasted-pasted-text-inherit-previous-text-style-it Se hai bisogno di maggiori dettagli sul problema, ecco un altro link http://code.google.com/p/blogaway/issues/detail?id=32 Probabilmente, il link sopra è più informativo per capire qual è il problema. – skysign

+0

Sebbene lo scopo di 'SpannableString' sia piuttosto ovvio, un esempio di' SpanningString' sarebbe molto utile, in quanto non è chiaro a me come usarlo e come crearlo in primo luogo. – AndreKR

9

Sto solo iniziando a cercare di capirlo, e sembra inutilmente difficile.

Ecco un metodo di lavoro per aggiungere NUOVO testo spanable a una vista esistente. Volevo aggiungere un testo colorato a una vista e questo sembrava l'unico modo per farlo.

Anche se sembra un brutto trucco, è possibile creare un fittizio TextView (non mostrato da nessuna parte) e stile il testo lì, quindi aggiungere quel testo in stile ovunque si desideri. Il merito va a iifuzz su anddev.org. Il mio codice è in questo modo:

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); 

Penso che dovresti essere in grado di creare nuovo testo spannable utilizzando la SpannableFactory, in questo modo:

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

ma non ho potuto ottenere questo testo per in realtà mostra nuovi effetti di span, quindi ho rinunciato.

Problemi correlati