Оставаться курсором внутри EditText android

У меня есть одна кнопка изображения возврата, чтобы удалить один символ после курсора внутри поля Editext.

<ImageButton
    android:id="@+id/backspace"/>

<EditText
    android:id="@+id/result"/>

И это код

EditText resultEditText = (EditText)  getActivity().findViewById(R.id.result);

int curPostion;

curPostion = resultEditText.getSelectionEnd();

//getting the selected Text
SpannableStringBuilder selectedStr = new SpannableStringBuilder(resultEditText.getText());

//replacing the selected text with empty String
selectedStr.replace(curPostion - 1, curPostion, "");
resultEditText.setSelection(curPostion);

//Set new string
resultEditText.setText(selectedStr);

Моя проблема в том, что когда я нажимаю кнопку возврата, один символ успешно удаляется, но курсор сразу же возвращается к первой позиции EditText.

Как оставить курсор на месте после удаления символа?

Я очень ценю вашу помощь. Спасибо большое.


person Lucky Luke    schedule 20.08.2015    source источник


Ответы (1)


Я только что нашел решение, просто добавьте новую переменную для хранения новой позиции курсора, а затем setSelection().

В деталях

EditText resultEditText = (EditText)  getActivity().findViewById(R.id.result);

int curPostion;

curPostion = resultEditText.getSelectionEnd();

//getting the selected Text
SpannableStringBuilder selectedStr = new SpannableStringBuilder(resultEditText.getText());

//replacing the selected text with empty String
selectedStr.replace(curPostion - 1, curPostion, "");

//Store postition
int afterDelPosition = curPostion - 1;

//Установить новую строку resultEditText.setText(selectedStr);

//This will remain the cursor position
resultEditText.setSelection(afterDelPosition);

Я надеюсь, что это будет полезно.

person Lucky Luke    schedule 20.08.2015