由于 setSelection(),EditText 中的文本删除停止

Text deletion in EditText stops because of setSelection()

我想用以下代码突出显示 EditText 中的一些词:

mEditText.addTextChangedListener(new TextWatcher() {
        private boolean ignoreChange = false;
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }
        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            int cursorPosition = mEditText.getSelectionStart();
            if(!ignoreChange){
                //Highlight words
                ignoreChange = true;
                mEditText.setText(spannable);
                mEditText.setSelection(cursorPosition);
                ignoreChange = false;
            }
        }
        @Override
        public void afterTextChanged(Editable editable) {
        }
    });

所以,有两个问题:

-当我触摸键盘上的删除按钮时,它只删除一个字符而不是删除所有字符,直到我触摸按钮。

-文字输入很慢

我看到的这两个问题都是因为 setSelection(..)。我使用 setSelection(..) 因为 setText(..) 将光标发送到 EditText.

的开头

所以,问题的解决方案是把代码从 onTextChanged(...) 方法转化为 afterTextChanged(...)。 这样我们就可以通过可编辑对象直接编辑EditText的文本,所以我们不需要调用mEditText.setText(...)mEditText.setSelection(...)