Позиция курсора 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;
        }