Как установить позицию курсора в EditText?
Есть два EditText , при загрузке страницы текст устанавливается в первом EditText, поэтому теперь курсор будет в исходном месте EditText , я хочу установить позицию курсора во втором EditText, который не содержит данных. Как это сделать?
Где позиция int:
Я сделал так, чтобы установить положение курсора в конец текста после обновления текста EditText программно здесь, etmsg – EditText
Как установить позицию курсора EditText в Android
Ниже кода установлен курсор для EditText в EditText :
Ниже кода установлен курсор до конца EditText :
Ниже кода устанавливается курсор после некоторой 2-й позиции символа:
Я хочу установить позицию курсора в edittext, которая не содержит данных
В пустом EditText есть только одна позиция, это setSeletion(0) .
Или вы имели в виду, что хотите сосредоточиться на своем EditText когда открывается ваша деятельность? В этом случае его requestFocus()
Пусть editText2 – это ваш второй вариант EditText. Затем введите следующий фрагмент кода в onResume ()
В вашем xml-макете второго представления EditText.
SetSelection (int index) в Edittext должен позволить вам сделать это.
В качестве напоминания: если вы используете edittext.setSelection() чтобы установить курсор, и он НЕ работает при настройке alertdialog например, убедитесь, что вы alertdialog selection() ПОСЛЕ того, как диалог был создан
Используйте нижнюю строку
e2 – текст редактирования Название объекта
Я не получаю метод setSelection () напрямую, поэтому я сделал, как показано ниже, и работал как шарм
Если вы хотите установить курсор после n символа справа налево, вам нужно сделать это следующим образом.
Если текст edittext
И вы хотите переместить курсор на 6-ю позицию справа
Затем он переместит курсор в положение-
Некоторое время редактирование текстового курсора donot приходит в конкретное положение, если мы непосредственно используем editText.setSelection(position); , В этом случае вы можете попробовать
Помните вызов requestFocus() перед setSelection для edittext.
Установите курсор в строку и столбец
Вы можете использовать следующий код, чтобы получить позицию в вашем EditText, которая соответствует определенной строке и столбцу. Затем вы можете использовать editText.setSelection(getIndexFromPos(row, column)) чтобы установить позицию курсора. Следующие вызовы метода могут быть сделаны:
- getIndexFromPos(x, y) Перейдите к столбцу y строки x
- getIndexFromPos(x, -1) Перейти к последнему столбцу строки x
- getIndexFromPos(-1, y) Переход к столбцу y последней строки
- getIndexFromPos(-1, -1) Перейти к последнему столбцу последней строки
Обработка всех строк и столбцов осуществляется; Ввод столбца, превышающего длину строки, будет возвращать позицию в последнем столбце строки. Ввод строки, превышающей количество строк в EditText, будет переходить к последней строке. Он должен быть достаточно надежным, так как он был сильно протестирован.
Вопрос уже был дан, но я думал, что кто-то захочет это сделать.
Он работает путем циклического прохождения каждого символа, увеличивая количество строк каждый раз, когда находит разделитель строк. Когда количество строк равно требуемой строке, оно возвращает текущий индекс + столбец или индекс конца строки, если столбец находится за пределами границ. Вы также можете повторно использовать метод getTrueLineCount() , он возвращает количество строк, игнорируя перенос текста, в отличие от TextView.getLineCount() .
В kotlin вы можете создать функцию расширения следующим образом:
А затем просто вызовите myEditText.placeCursorAtLast()
Я считаю, что самый простой способ сделать это – просто использовать прописку.
Скажем в разделе edittext вашего xml, добавьте android: paddingLeft = «100dp». Это переместит вашу начальную позицию курсора 100dp справа от левого края.
Точно так же вы можете использовать android: paddingRight = «100dp» Это переместит ваше конечное положение курсора 100dp влево от правого конца.
Для более подробной информации, прочтите эту статью в своем блоге : Android: настройка курсора Запуск и завершение позиции в EditText Widget
Источник