Cursorposition in Android in Text bearbeiten?

73

Ich verwende eine benutzerdefinierte EditText-Ansicht. Ich habe das OnKeyUp-Ereignis überschrieben und kann den Tastendruck erfassen. Jetzt ist meine Anforderung, wenn der Benutzer einen Text "Hallo. Wie geht es Ihnen?" Eingegeben hat. und dann hält der Cursor nach dem Wort "sind" und drücken Sie die Eingabetaste. Ich muss die Cursorposition ermitteln, damit ich den Text nach dem Cursor in dem Moment extrahieren kann, in dem die Eingabetaste gedrückt wurde. Bitte lassen Sie mich wissen, wie das geht. Vielen Dank für Ihre Zeit und Hilfe.

Vinod
quelle

Antworten:

164

Sie können die Cursorposition mit den Methoden getSelectionStart () und getSelectionEnd () abrufen. Wenn kein Text markiert ist, geben sowohl getSelectionStart () als auch getSelectionEnd () die Position des Cursors zurück. So etwas sollte also den Trick machen:

myEditText.getSelectionStart();

oder

myEditText.getSelectionEnd();

Wenn Sie dann den gesamten Text nach dem Cursor auswählen möchten, können Sie Folgendes verwenden:

int cursorPosition = myEditText.getSelectionStart();
CharSequence enteredText = myEditText.getText().toString();
CharSequence cursorToEnd = enteredText.subSequence(cursorPosition, enteredText.length());
theisenp
quelle
1
Für einige Leute kann es hilfreich sein zu wissen, dass getSelectionEnd und getSelection start statische Methoden in der Selection-Klasse sind, nicht in EditText selbst. Hier sind die Dokumente: developer.android.com/reference/android/text/Selection
Jo Momma