Как установить позицию курсора в EditText? - PullRequest
215 голосов
/ 07 ноября 2011

Есть два EditText, при загрузке страницы текст задается в первом EditText, поэтому теперь курсор будет находиться на начальной позиции EditText, я хочу установить позицию курсора во втором EditText , который не содержит данных. Как это сделать?

Ответы [ 20 ]

437 голосов
/ 07 ноября 2011

Где позиция является int:

editText1.setSelection(position)
92 голосов
/ 07 ноября 2011

Я сделал так, чтобы установить позицию курсора на конец текста после программного обновления текста EditText здесь etmsg - это EditText

etmsg.setText("Updated Text From another Activity");
int position = etmsg.length();
Editable etext = etmsg.getText();
Selection.setSelection(etext, position);
31 голосов
/ 27 апреля 2015

Как установить положение курсора EditText в Android

Ниже кода Установить курсор на Начало в EditText:

 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());

Ниже кода установлен Установить курсор после некоторой позиции 2-го символа:

 EditText editText = (EditText)findViewById(R.id.edittext_id);
 editText.setSelection(2);
15 голосов
/ 07 ноября 2011

Я хочу установить позицию курсора в тексте редактирования, который не содержит данных

В пустом тексте редактирования есть только одна позиция, это setSelection(0).

Или вы имели в виду, что хотите сфокусироваться на EditText, когда начнется ваша деятельность? В этом случае его requestFocus()

11 голосов
/ 31 января 2017

используйте следующую строку

e2.setSelection(e2.length());

e2 это текст редактирования Имя объекта

9 голосов
/ 24 апреля 2013

Пусть editText2 - это ваше второе представление EditText. Затем поместите следующий фрагмент кода в onResume ()

editText2.setFocusableInTouchMode(true);
editText2.requestFocus();

или вставьте

<requestFocus />

в ваш xmlмакет второго представления EditText.

6 голосов
/ 16 мая 2017

некоторое время редактирование текстового курсора не происходит в определенной позиции, если мы непосредственно используем editText.setSelection(position);. В этом случае вы можете попробовать

editText.post(new Runnable() {
                @Override
                public void run() {
                    editText.setSelection(string.length());
                }
            });
5 голосов
/ 07 ноября 2011

setSelection(int index) метод в Edittext должен позволить вам сделать это.

4 голосов
/ 19 апреля 2013

как напоминание: если вы используете edittext.setSelection() для установки курсора, и он НЕ работает, например, при настройке alertdialog, обязательно установите selection() ПОСЛЕ диалогового окна, которое было создано

пример:

AlertDialog dialog = builder.show();
input.setSelection(x,y);
3 голосов
/ 10 декабря 2018

Если вы хотите поместить курсор в определенную позицию на EditText, вы можете использовать:

yourEditText.setSelection(position);

Кроме того, есть возможность установить начальную и конечную позиции, так что вы программно выбираетенекоторый текст, таким образом:

yourEditText.setSelection(startPosition, endPosition);

Обратите внимание, что установка выделения может быть сложной, поскольку вы можете поместить курсор перед или после символа, изображениениже объясняется, как индексирование работает в этом случае:

enter image description here

Итак, если вам нужен курсор в конце текста, просто установите его на yourEditText.length().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...