Предполагая, что пользователь написал какой-то текст в EditText, а затем коснулся где-то еще на экране, что вызвало изменение положения курсора: как определить новую позицию курсора?
Позиция курсора EditText
Ответ 1
Простая версия:
myEditText.getSelectionStart();
Если вы хотите отреагировать на событие, вы можете попробовать
myEditText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
// view is myEditText here
}
});
event
позволяет различать прессы и релизы.
EditText
также имеет setOnClickListener()
, на который стоит обратить внимание.
EDIT:
Я забыл упомянуть onSelectionChanged(int selStart, int selEnd)
, где selEnd равно selStart, если позиция изменилась.
Ответ 2
Лучший и безопасный способ: TextWatcher
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int cursorIndex = start + 1;
}