小编mys*_*obo的帖子

TextWatcher onTextChanged不适用于软键盘自动完成/建议的单词

我在EditText上实现TextWatcher,以在用户输入新字符时在文本内查找并加下划线的一系列关键字。但是,当在软键盘上选择建议的/自动完成的单词时,不是将建议的单词添加到Edittext,然后调用onTextChanged函数,将删除一半的完整单词。我发现这很奇怪,因为输入单个字符会激活onTextChanged函数。任何帮助将不胜感激。

PS。如果有人知道即时处理EditText的更好方法,请告诉我。

码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_codify_test);
    final EditText editText = (EditText) findViewById(R.id.editText_codifyTest);
    editText.addTextChangedListener(new TextWatcher() {

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

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!checked) { //stop infinite loop
                checked = true;
                cursorPosition = editText.getSelectionStart(); //get cursor position before text modification
                codifyText(editText);
            } else {
                checked = false;
            }
        }
        @Override
        public void afterTextChanged(Editable s) {
        }
    }); …
Run Code Online (Sandbox Code Playgroud)

android textwatcher android-softkeyboard android-edittext android-textwatcher

6
推荐指数
1
解决办法
2572
查看次数