Die Dokumentation für InputConnection.commitText(CharSequence text, int newCursorPosition)
sagt, dass newCursorPosition
bedeutet:den Cursor am Anfang des eingefügten Text mit InputConnection.commitText
int: Die neue Cursor-Position um den Text, in Java-Zeichen. Wenn> 0, ist dies relativ zum Ende des Textes - 1; Wenn < = 0, ist dies relativ zum Anfang des Textes. Also ein Wert von 1 wird immer den Cursor an die Position nach dem Volltext eingefügt werden. Hinweis das bedeutet, dass Sie den Cursor nicht innerhalb des Textes positionieren können, da der Editor Änderungen an dem von Ihnen bereitgestellten Text vornehmen kann, damit dort nicht korrekt angegeben werden kann.
In this example, wenn ich zwei Zeichen eingeben, dann positionieren Sie den Cursor zwischen ihnen wie dieser
und dann ein anderes Zeichen eingeben, ist es egal, ob ich newCursorPosition
-0
gesetzt oder 1
. Der Cursor befindet sich immer am Ende der Einfügung. Zum Beispiel
inputConnection.commitText("aaa", 0);
oder
inputConnection.commitText("aaa", 1);
Beide Aufruf zeigen den Cursor wie folgt aus:
Wenn ich -1
mit
inputConnection.commitText("aaa", -1);
Ich erhalte diese
Die 1
und -1
Ergebnisse werden gemäß der Dokumentation zu erwarten. Warum setzt 0
den Cursor nicht an den Anfang der Einfügung? Ich würde erwarten, 0
wie diese
inputConnection.commitText("aaa", 0);
sein sollte, ist es aber nicht. Warum nicht?
Warum zeigen Sie zwei verschiedene Standorte für 0? Vielleicht hat 0 keine Wirkung? –
Im letzten Bild zeige ich das erwartete Ergebnis, nicht das tatsächliche Ergebnis. @AlexanderHiggins – Suragch