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

Lag after setting text in OnTextChanged()

下面是一个复制我的滞后问题的示例。一旦我在 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);
            }
        }
    });

我四处寻找,没有找到解决方案。

它滞后是因为您删除并重新添加了您的侦听器。

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

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

希望对您有所帮助。

我发现问题出在 textView.setText() 调用上。

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

我之前尝试过使用 Editable,但是我无法使用诸如“$12,000”之类的输入。

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

此致, 斯科特。