Как отключить позиционирование курсора и выбор текста в EditText? (Android)
Я ищу способ предотвратить перемещение пользователем положения курсора в любом месте. Курсор должен всегда оставаться в конце текущего значения EditText. В дополнение к этому пользователь не должен выбирать что-либо в EditText. Вы знаете, как реализовать это в Android с помощью EditText?
Чтобы уточнить: пользователь должен иметь возможность вставлять текст, но только в конце.
Ответы
Ответ 1
У меня была та же проблема. Это закончилось для меня работой:
public class CustomEditText extends EditText {
@Override
public void onSelectionChanged(int start, int end) {
CharSequence text = getText();
if (text != null) {
if (start != text.length() || end != text.length()) {
setSelection(text.length(), text.length());
return;
}
}
super.onSelectionChanged(start, end);
}
}
Ответ 2
Это будет reset курсор фокус на последнюю позицию текста
editText.setSelection(editText.getText().length());
Этот метод отключит перемещение курсора при касании
public class MyEditText extends EditText{
@Override
public boolean onTouchEvent(MotionEvent event)
{
final int eventX = event.getX();
final int eventY = event.getY();
if( (eventX,eventY) is in the middle of your editText)
{
return false;
}
return true;
}
}
И вы можете использовать либо атрибут xml
андроида: cursorVisible
или java-функция
setCursorVisible (булево)
чтобы отключить мигающий курсор edittext
Ответ 3
Похоже, что лучший способ сделать это - создать свой собственный класс CustomEditText
и переопределить/изменить любые соответствующие методы. Вы можете увидеть исходный код для EditText
здесь.
public class CustomEditText extends EditText {
@Override
public void selectAll() {
// Do nothing
}
/* override other methods, etc. */
}
Ответ 4
Попробуйте следующее:
mEditText.setMovementMethod(null);