存在TextWatcher时按Backspace / Delete键时EditText光标的位置

时间:2018-08-30 10:56:20

标签: android android-edittext

我有具有自定义TextWatcher的EditText。当用户手动移动光标位置并删除一些字符时,它总是转到结束位置。当他按下Delete / Backspace时如何保持光标的相同位置?

  private class CTextWatcher implements TextWatcher {
    private final EditText editText;


    CTextWatcher(EditText editText, String prefix) {
        this.editText = editText;
        this.prefix = prefix;
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // do nothing
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // do nothing
    }

    @Override
    public void afterTextChanged(Editable editable) {

         editText.removeTextChangedListener(this); // Remove listener
        editText.setText(formattedString);
          editText.setSelection(editText.getText().length());
        editText.addTextChangedListener(this); // Add back the listener
    }

例如,我有text = 1234,并且用户将光标移到3之前,然后向后按它将返回txt=134,然后光标应保持在当前代码的2位置,并且始终会结束。即4点以后。

1 个答案:

答案 0 :(得分:0)

删除下面的行:

editText.setSelection(editText.getText().length());