Установить курсор в конец текста в EditText
Я изменяю значение EditText
в обработчике keyListener
.
Однако, когда я изменяю текст, курсор перемещается в начало EditText
. Мне нужно, чтобы курсор находился в конце текста.
Как переместить курсор в конец текста в EditText
?
5 ответ(ов)
Попробуйте это:
Обновление:
Kotlin:
editText.setSelection(editText.length()) // устанавливаем курсор в конец текста
Java:
editText.setSelection(editText.getText().length());
Функция append
для EditText
добавляет строковое значение к текущему значению EditText
и устанавливает курсор в конец текста. Вы можете использовать текущее значение EditText
в качестве строки и вызвать append()
:
myEditText.append("текущая_строка_в_editText");
Таким образом, если вы хотите добавить другую строку к существующему тексту в EditText
, просто передайте нужную строку в метод append()
, и курсор автоматически переместится в конец обновленного текста.
Ваша задача - установить курсор в определённые позиции в EditText
в Android. Ниже приведены примеры на Kotlin и Java.
Kotlin:
- Установить курсор в начальное положение:
val editText = findViewById<EditText>(R.id.edittext_id)
editText.setSelection(0)
- Установить курсор в конец
EditText
:
val editText = findViewById<EditText>(R.id.edittext_id)
editText.setSelection(editText.text.length)
- Установить курсор после второго символа:
val editText = findViewById<EditText>(R.id.edittext_id)
editText.setSelection(2)
Java:
- Установить курсор в начальное положение:
EditText editText = (EditText) findViewById(R.id.edittext_id);
editText.setSelection(0);
- Установить курсор в конец
EditText
:
EditText editText = (EditText) findViewById(R.id.edittext_id);
editText.setSelection(editText.getText().length());
- Установить курсор после второго символа:
EditText editText = (EditText) findViewById(R.id.edittext_id);
editText.setSelection(2);
Вышеуказанные примеры показывают, как управлять позицией курсора в EditText
как на Kotlin, так и на Java.
Вы также можете установить курсор в конец текста в представлении EditText
следующим образом:
EditText et = (EditText)findViewById(R.id.textview);
int textLength = et.getText().length();
et.setSelection(textLength, textLength);
Этот код извлекает длину текста в EditText
и устанавливает курсор в конец текста, что может быть полезно при редактировании.
Ваш код устанавливает OnKeyListener
для элемента editText
, который, при нажатии клавиши, перемещает курсор в конец текста. Вот перевод вашего кода на русский и объяснение его работы:
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// Устанавливаем курсор в конец текста
editText.setSelection(editText.getText().length());
return false; // Возвращаем false, чтобы позволить дальнейшей обработке события
}
});
При каждом нажатии клавиши в editText
, курсор перемещается в конец введенного текста. Обратите внимание, что метод onKey
возвращает false
, что означает, что событие будет обрабатываться дальше (например, клавиатура не будет заблокирована, и текст по-прежнему будет вводиться).
Если у вас есть дополнительные вопросы или нужно что-то уточнить, не стесняйтесь спрашивать!
Как исправить 'android.os.NetworkOnMainThreadException'?
Каков эквивалент статических методов Java в Kotlin?
Почему в RecyclerView отсутствует onItemClickListener()?
Не удается запустить Eclipse - Java был запущен, но вернул код завершения = 13
Как вызвать метод с задержкой в Android