在OnTextChanged()中设置文本后滞后

时间:2017-04-21 05:09:22

标签: android android-layout android-edittext android-textwatcher

下面是一个复制我的滞后问题的例子。在EditTextView上设置文本后,至少需要1.5秒才能允许用户输入另一个字符。

    amountEditText.addTextChangedListener(new TextWatcher() {
        @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
        @Override public void afterTextChanged(Editable s) {}
        @Override public void onTextChanged(CharSequence s, int start, int before, int count) {
            String amount = s.toString();

            if( !amount.equals(current )) {
                amountEditText.removeTextChangedListener(this);
                amountEditText.setText(s);
                Selection.setSelection(amountEditText.getText(), amountEditText.getText().length());
                amountEditText.addTextChangedListener(this);
            }
        }
    });

我已经四处寻找并且没有找到解决方案。

4 个答案:

答案 0 :(得分:0)

它会滞后,因为您删除然后读取了您的侦听器。

答案 1 :(得分:0)

您似乎正在尝试选择EditText中的文本。为此,只需在xml中设置editText.setSelectAllOnFocus(true);android:selectAllOnFocus="true"即可。然后从代码中删除整个TextChangedListener。

答案 2 :(得分:0)

据我所知,这很可能是因为每次尝试删除(amountEditText.removeTextChangedListener(this);)并添加(amountEditText.addTextChangedListener(this);)文本更改侦听器。我建议您在没有添加和删除代码的情况下替换代码。

希望这会有所帮助。

答案 3 :(得分:0)

我发现问题来自textView.setText()调用。

解决方案是不使用setText(),而是使用onTextChanged回调中提供给你的Editable。

我之前尝试使用Editable,但是我无法使用" $ 12,000"等输入。

这是因为InputFilters仍然附加到Editable。

此致 斯科特。