29 Stimmen

Gibt es ein Beispiel für gespannten und spannbaren Text?

Ich kämpfe mit der Verwendung von EditText und Spannable Text-Objekt. In den letzten Tagen habe ich die API-Dokumente etwa zehn Mal gelesen, und selbst bin ich mir nicht sicher, ob ich es richtig verstanden habe. Deshalb suche ich nach einem Beispiel, das mir zeigt, wie man EditText und Spannable nutzt.

5 Stimmen

chrisumbel.com/article/… Dies ist eine perfekte Antwort für alle, die etwas mit Spannable und Textview machen möchten.

0 Stimmen

Siehe hier und hier für einige Beispiele.

32voto

andy Punkte 686

Da Sie nicht angeben, was Sie aus der API nicht verstehen, ist es schwer, Ihre Fragen zu beantworten (kurze Antwort: Formulieren Sie Ihre Frage neu als konkrete Frage anstelle einer allgemeinen).

Ein typisches Beispiel für Spannable ist etwas wie das folgende, um ausgewählten Text in einem EditText kursiv zu machen:

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

Dies ist aus woanders kopiert, daher könnte die direkte Einfügbarkeit beeinträchtigt sein, aber es zeigt zumindest ein funktionierendes Beispiel für ein Spannable (in diesem Fall ein StyleSpan). In der API finden Sie andere Arten von Spans (insbesondere ImageSpan, was eine häufige Frage unter neu konvertierten Android-Nutzern ist).

0 Stimmen

Diese Antwort ist sehr hilfreich für mich, danke. Aber ich habe immer noch eine Menge Probleme, die ich lösen muss. Wie Sie oben beschrieben haben, hier ist ein Link, um das Problem zu zeigen, mit dem ich konfrontiert war. stackoverflow.com/questions/2093111/… Wenn Sie weitere Details zum Problem benötigen, hier ist ein weiterer Link. code.google.com/p/blogaway/issues/detail?id=32 Wahrscheinlich ist der obige Link informativer, um herauszufinden, worum es bei dem Problem geht.

1 Stimmen

Während der Zweck von SpannableString recht offensichtlich ist, wäre ein Beispiel für SpannedString sehr hilfreich, da mir völlig unklar ist, wofür es verwendet werden soll und wie man es überhaupt erstellt.

10voto

Sam L. Punkte 166

Ich versuche auch gerade erst, es herauszufinden, und es scheint unnötig knifflig zu sein.

Hier ist eine funktionierende Methode, um NEUEN Spanntext zu einer vorhandenen Ansicht hinzuzufügen. Ich wollte farbigen Text zu einer Ansicht hinzufügen, und dies schien der einzige Weg zu sein.

Auch wenn es wie ein hässlicher Hack erscheint, können Sie eine Dummy-TextView erstellen (die nirgendwo angezeigt wird) und den Text dort formatieren, um dann diesen formatierten Text an der gewünschten Stelle anzufügen. Der Dank dafür geht an iifuzz von anddev.org. Mein Code sieht so aus:

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

Man sollte eigentlich neuen Spanntext mithilfe der SpannableFactory erstellen können, wie folgt:

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

aber ich konnte diesen Text nicht dazu bringen, tatsächlich neue Spanneffekte anzuzeigen, also habe ich aufgegeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X