我所拥有的:
我有一个edittext,它接受十进制输入,并将xml中的默认值设置为 0.00
(如果还没有输入)
如果用户按 1
,则值更改为 1
. 如果他需要输入小数点,那么他必须按这个点 .
在键盘上。
我想要的是:
我想以十进制格式自动格式化编辑文本 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());
}
}
}
1条答案
按热度按时间j2qf4p5b1#
正如您所描述的,您需要用小数点除以100: