2016-10-14 3 views
0

Ich versuche, die HTML-Transformation Fähigkeiten innerhalb von Android 4.4 zu erweitern. Ich muss in der Lage sein, die Textgröße innerhalb eines Textblocks beliebig auf einen absoluten Wert zu ändern.android, textview und MetricAffectingSpan

So habe ich ein Starttextblock Größe mit einem AbsoluteSizeSpan wie folgt aus:

ass = new AbsoluteSizeSpan(Integer.valueOf(18), true); 
output.setSpan(ass, 0, 255, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

Nun, wenn ich innerhalb dieser Spanne die Größe eines Wortes oder eines Satzes ändern müssen, bin ich das gleiche tun wieder -

ass = new AbsoluteSizeSpan(Integer.valueOf(12), true); 
output.setSpan(ass, 100, 185, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

Dies wird jedoch nicht berücksichtigt.

Bedeutet dies, dass dies nicht möglich ist? Muss ich etwas in der Textansicht ändern, um dies zu ermöglichen?

+0

mit einem 'AbsoluteSizeSpan' im anderen nur finden * funktioniert nicht *. Siehe meine Antwort für eine Alternative. –

+0

Ich würde gerne verstehen, warum, obwohl ... – Simon

+0

Ich stehe behoben, kann ich diese verschachtelten Spannen für einfache Fälle zurück zu API 16 zu arbeiten. Jetzt würde ich dies nie mit Text beliebiger Komplexität tun, weil der Text-Layout-Code ist ein Minenfeld. Bitte aktualisieren Sie Ihre Frage mit einem Code-Snippet, das fehlschlägt. Teilen Sie uns außerdem mit, welche API Sie ausführen. Was hilfreich sein kann, sind Details über das Layout Ihres 'TextView', da die Breite bestimmt, wo Zeilenumbrüche auftreten, und eine Menge seltsamer Fehler sind um den Zeilenumbruch herum aufgetreten. Ich brauche nur genug Informationen, dass ich es reproduzieren kann. Vielleicht sogar ein Screenshot? Ich werde meine Antwort aktualisieren. –

Antwort

1
 AbsoluteSizeSpan ass18 = new AbsoluteSizeSpan(Integer.valueOf(18), true); 
     AbsoluteSizeSpan ass12 = new AbsoluteSizeSpan(Integer.valueOf(12), true); 
     output.setSpan(ass18, 0, 100, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
     output.setSpan(ass12, 100, 185, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
     output.setSpan(ass18, 185, 255, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
+0

@Simon, es funktioniert. – Madhan

+0

Dies scheint ein Workaround zu sein, aber immer noch nicht in einem anderen verschachtelt. Bei der Verarbeitung von HTML-Tags würde es erforderlich sein, eine separate Liste von diesen zu führen und sie dann jedes Mal zu durchsuchen, wenn eine neue vorhanden ist, um die Definition aufzuteilen, wenn eine in die andere eingebettet wird. Es scheint Overkill, wenn es einen Weg gibt, um wirklich ineinander zu verschachteln. – Simon