【发布时间】:2021-03-20 15:09:27
【问题描述】:
我有什么:
我有一个接受十进制输入的 EditText,我将 XML 中的默认值设置为 0.00(如果还没有输入)
如果用户按下1,则值更改为1。如果他需要输入十进制值,那么他必须按键盘上的点.。
我想要什么:
我想将 EditText 自动格式化为十进制格式 0.00,因此如果用户按 1,如果变为 0.01 而不是 1(就像在 PAYPAL 应用程序中一样)。如果他输入100,那么EditText中的值必须格式化为1.00。
我知道这可以通过使用TextWatcher 来完成,但我不知道如何实现。
最终结果比较:
我有什么
1 = 1
11 = 11
222 = 222
我需要什么
1 = 0.01
11 = 0.11
222 = 2.22
更新:
我的实际 TextWatcher 如下所示,只是为了在用户删除所有输入时将默认值设置为 0.00(以防止计算函数出错)。
private class EditTextListener implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (editText.getText().toString().equals("") || editText.length() < 1){
editText.setText("0.00");
editText.post(() -> editText.setSelection(editText.getText().length()));
} else {
BigDecimal amount = new BigDecimal(editText.getText().toString());
}
}
}
【问题讨论】:
-
发布一些代码来展示你所做的事情
标签: java android android-edittext android-textwatcher