Ich kenne keinen einfachen direkten Weg, um dies zu tun, aber Sie sollten in der Lage sein, etwas zusammenzustellen, indem Sie Paint Objekt des TextView über einen Aufruf an TextView.getPaint ()
Sobald Sie das Paint-Objekt haben, haben Sie Zugriff auf die zugrundeliegenden FontMetrices über einen Aufruf von Paint.getFontMetrics () und haben Zugriff auf andere Funktionen wie Paint.measureText () Paint.getTextBounds () und Paint.getTextWidths () um auf die tatsächliche Größe des angezeigten Textes zuzugreifen.
Obwohl es im Allgemeinen funktioniert, hatte ich ein paar Probleme mit der Antwort von Tony Blues.
Erstens getOffsetForHorizontal gibt einen Offset zurück, selbst wenn das x Die Koordinate liegt weit über dem letzten Zeichen der Zeile.
Zweitens gehört der zurückgegebene Zeichenversatz manchmal zum nächsten Zeichen, nicht zum Zeichen direkt unter dem Zeiger. Anscheinend gibt die Methode den Offset der nächsten Cursorposition zurück. Je nachdem, was näher ist, kann sich das links oder rechts davon befinden.
Meine Lösung verwendet stattdessen getPrimaryHorizontal , um die Cursorposition von a zu bestimmen bestimmter Offset und verwendet binäre Suche, um den Versatz unterhalb der X-Koordinate des Zeigers zu finden.
%Vor%Tags und Links android textview ontouchlistener fontmetrics