【发布时间】:2019-12-16 14:07:30
【问题描述】:
我需要格式化输入 EditText 的货币值,所以我使用了 TextWatcher,但现在我在软键盘中遇到退格问题。
通常,如果您按住键盘上的退格键,它会继续删除EditText 中的字符,直到没有剩余内容为止。添加TextWatcher后,您需要手动按退格键多次,以完全摆脱所有字符,因为按住它不再起作用。
我该如何解决?
public class NumberTextWatcher implements TextWatcher {
private final EditText et;
public NumberTextWatcher(EditText et) {
this.et = et;
}
@Override
public void afterTextChanged(Editable s) {
et.removeTextChangedListener(this);
try {
String originalString = s.toString();
long longval;
if (originalString.contains(",")) {
originalString = originalString.replaceAll(",", "");
}
longval = Long.parseLong(originalString);
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
formatter.applyPattern("#,###,###,###");
String formattedString = formatter.format(longval);
//setting text after format to EditText
et.setText(formattedString);
et.setSelection(et.getText().length());
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
et.addTextChangedListener(this);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
}
【问题讨论】:
标签: android android-edittext textwatcher backspace