Assuming, that a user has written some text into an EditText and thereafter touched somewhere else on the screen, which caused the cursor position to change: How can one determine the new cursor position?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The simple version:
myEditText.getSelectionStart();
If you want to react on an event you may try
myEditText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { // view is myEditText here } });
event
allows to distinguish between presses and releases.
EditText
also has a setOnClickListener()
that might be worth to look at.
EDIT: I forgot to mention onSelectionChanged(int selStart, int selEnd)
where selEnd equals selStart if the position changed.
回答2:
Best and safe way is using TextWatcher
@Override public void onTextChanged(CharSequence s, int start, int before, int count) { int cursorIndex = start + 1; }