Derzeit verwende ich paintObject.measureText(textCopy.substring(0,i))
beim Durchlaufen einer Kopie des TextView-Textes. Zum Beispiel gibt measureText("abc".substring(0,1))
mir die relativen x Koordinaten von 'b'. Die y Koordinate erhalte ich von layout.getLineTop()
. Dies funktioniert, aber nicht genau für x Koordinaten für nicht monospaced Fonts. Ich kann ein wenig kalibrieren, aber auf jedem Gerät funktioniert es anders.Finden Sie die genauen Koordinaten eines einzelnen Zeichens in einem TextView
Die beste Lösung, die ich mir vorstellen kann, ist das Überschreiben der Klasse, die für das Zeichnen der TextView auf dem Bildschirm verantwortlich ist und, hoffentlich, die Koordinaten jedes Zeichens auf dem Bildschirm gezeichnet.
Weiß jemand, welche Klasse ich überschreiben muss, um dies zu erreichen? Oder vielleicht eine andere kreative Lösung?
Sollte der Text irgendein Markup enthalten (wie einige HTML-Tags)? Wenn nicht, können Sie einfach "onDraw()" von TextView überschreiben und den Text wie gewünscht zeichnen. –
Es könnte übergreifenden Text enthalten. – Igor
Nun, das verkompliziert die Dinge ein wenig, in "onDraw()" müssen Sie jedes Zeichen basierend auf dem Bereich, zu dem es gehört, wie fett oder kursiv usw., aktualisieren, indem Sie die zum Zeichnen verwendete Farbe aktualisieren. –