Ich habe eine TextView
mit einer OnTouchListener
. Was ich will, ist der Zeichenindex, auf den der Benutzer zeigt, wenn ich die MotionEvent
bekomme. Gibt es eine Möglichkeit, zu den zugrunde liegenden Schriftmetriken der TextView
zu gelangen?Android: Wie wird der Zeichenindex der Position eines Berührungsereignisses in TextView ermittelt?
Android: Wie wird der Zeichenindex der Position eines Berührungsereignisses in TextView ermittelt?
Antwort
Ich bin mir nicht bewusst eine einfache, direkte Art und Weise, dies zu tun, aber Sie sollten etwas gemeinsam in der Lage sein zu setzen mit der Paint Aufgabe der Textview über einen Aufruf TextView.getPaint()
Sobald Sie die Farbe Objekt haben Sie Zugriff auf die zugrunde liegenden FontMetrices über einen Aufruf von Paint.getFontMetrics() und Zugriff auf andere Funktionen wie Paint.measureText() Paint.getTextBounds() und Paint.getTextWidths() für den Zugriff auf die tatsächliche Größe des angezeigten Textes.
Haben Sie so etwas wie dies versucht:
Layout layout = this.getLayout();
if (layout != null)
{
int line = layout.getLineForVertical(y);
int offset = layout.getOffsetForHorizontal(line, x);
// At this point, "offset" should be what you want - the character index
}
Hope this ...
Ich habe die Google-Ingenieure bei den Google IO-Bürozeiten befragt, und das ist das Gleiche, was sie herausgefunden haben. –
Ich bin so glücklich, dass ich diese Antwort gefunden habe, danke Tony! Es funktioniert ganz gut! Jetzt habe ich keine Probleme mehr mit Touch-Events, selbst wenn die TextView Bilder enthält. :-) – einschnaehkeee
Danke, dass du mein Leben gerettet hast :) – Mingfei
Dank hilft, landete ich dies oben mit. Schade, dass es keine einfache "pointToCharacterIndex" -Methode gibt, aber es war keine Hexerei, meinen eigenen Dank an Paint zu richten. – Epaga
@Tony Blues Antwort hat die pointToCharacterIndex Art von was Sie suchen. –