Java EditText中的文本删除因setSelection()而停止
我想用以下代码突出显示我的Java EditText中的文本删除因setSelection()而停止,java,android,android-edittext,Java,Android,Android Edittext,我想用以下代码突出显示我的EditText中的一些单词: mEditText.addTextChangedListener(new TextWatcher() { private boolean ignoreChange = false; @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { }
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(..)
是因为setext(..)
将光标发送到EditText
的开头,因此,问题的解决方案是从
onTextChanged(…)
方法转换为posterextchanged(…)
。
通过这种方式,我们可以直接通过editable对象编辑
EditText
的文本,因此我们不需要调用mEditText.setText(…)
和mEditText.setSelection(…)
,这将再次触发文本更改事件