Очистка всего текста перед позицией курсора на EditText - PullRequest
2 голосов
/ 18 января 2012

Я хочу очистить весь текст в EditText, который находится перед позицией курсора. Предположим, что текст: 1234567890 , курсор находится после символа 4 , как это 1234 | 567890 Теперь мое требование заключается в том, чтобы у меня была пользовательская кнопка, которая удаляет текст перед положением курсора.

Я использую editext.getText().clear(); для очистки текста, но он очищает весь текст. Если курсор находится в конце текста, это хорошо.

Возможно ли выполнить мое требование? Если да, то как? Пожалуйста, помогите мне в этом.

Ответы [ 2 ]

3 голосов
/ 18 января 2012

Вот как с этим справиться:

Вы получите позицию курсора, используя:

editText.getSelectionStart();

или

editText.getSelectionEnd();

Примечание: если неттекст выбран, оба метода будут возвращать один и тот же индекс.

Затем добавьте в текст строку EditText, а затем снова установите значение EditText.как то так:

int pos = editText.getSelectionStart();
String myText = editText.getText().toString();
//sub-string it.
String subStringed = myText.substring(pos, myText.length());
//set it again..
editText.setText(subStringed);
0 голосов
/ 26 сентября 2017

Следующий ответ может помочь вам. Он отлично работает для меня

Чтобы вставить текст / символ в выбранную позицию курсора EditText

int start = edtPhoneNo.getSelectionStart(); //this is to get the cursor position
    String s="sagar";//s="0123456789";
    edtPhoneNo.getText().insert(start, s);
    //this is to set the cursor position by +1 after inserting char/text
    edtPhoneNo.setSelection(start + 1);

Удалить текст / символ ввыбранная позиция EditText курсор

 int curPostion = edtPhoneNo.getSelectionEnd();   
     SpannableStringBuilder selectedStr = new 
     SpannableStringBuilder(edtPhoneNo.getText());
     selectedStr.replace(curPostion - 1, curPostion, "");
     edtPhoneNo.setText(selectedStr);
     //this is to set the cursor position by -1 after deleting char/text
     edtPhoneNo.setSelection(curPostion - 1);

Для установки EditText курсор на последнюю позицию

 edtPhoneNo.setSelection(edtPhoneNo.getText().length());

Это код XML для EditText

<EditText
            android:id="@+id/edtPhoneNumber"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/transparent"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:maxLines="1" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...