【问题标题】:EditText cursor position when backspace/delete press while TextWatcher is present存在 TextWatcher 时退格/删除时的 EditText 光标位置
【发布时间】:2018-08-30 10:56:19
【问题描述】:

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

  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 之后。

【问题讨论】:

标签: android android-edittext


【解决方案1】:

删除下面的行:

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

【讨论】:

  • 那么它总是转到第一个位置
  • 你试过了吗?你在用 formattedString 做什么?
  • 添加 .所以 1.22.333 你可以假设像货币格式..1.23.456 将变成 12.345
猜你喜欢
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
相关资源
最近更新 更多