-4

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

4 回答 4

0

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

于 2017-04-21T05:17:51.087 回答
0

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

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

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

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

问候,斯科特。

于 2017-04-24T04:04:58.973 回答
0

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

希望这有帮助。

于 2017-04-21T05:28:10.860 回答
0

它滞后是因为您删除然后读取了您的听众。

于 2017-04-21T05:13:14.357 回答