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