我有一个EditText,用户应该在其中输入一个数字,包括小数,我想一个千分隔符自动添加到输入的数字,我尝试了一些其他的方法,但有些不允许浮点数,所以我想出了这个代码,它工作得很好,只有字符串输入没有被实时编辑为一个可能的千分隔符和错误似乎源于s。
am2 = new TextWatcher(){
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
public void afterTextChanged(Editable s) {
if (s.toString().equals("")) {
amount.setText("");
value = 0;
}else{
StringBuffer strBuff = new StringBuffer();
char c;
for (int i = 0; i < amount2.getText().toString().length() ; i++) {
c = amount2.getText().toString().charAt(i);
if (Character.isDigit(c)) {
strBuff.append(c);
}
}
value = Double.parseDouble(strBuff.toString());
reverse();
NumberFormat nf2 = NumberFormat.getInstance(Locale.ENGLISH);
((DecimalFormat)nf2).applyPattern("###,###.#######");
s.replace(0, s.length(), nf2.format(value));
}
}
};
7条答案
按热度按时间nbnkbykc1#
这个类解决了这个问题,允许小数点输入并添加千位分隔符。
来源:http://blog.roshka.com/2012/08/android-edittext-with-number-format.html
eyh26e7m2#
不幸的是,代码没有工作,因为它是在答案。
它有两个问题:
1.如果电话区域设置配置使用“,”作为十进制分隔符,则此功能不起作用。
1.如果数字的小数部分有尾随零,则不起作用。例如1.01。
我发疯似的去修,最后终于找到了这段在手机上运行良好的代码:
数字文本监视器.java
然后用它来做:
col17t5w3#
您需要将
DecimalFormat
类与DecimalFormatSymbols
类一起使用,请检查以下方法,5rgfhyps4#
你可以像这样使用Kotlin扩展函数...
mbjcgjjk5#
//创建活动
yv5phkfx6#
我在Kotlin中对对话框使用了这种方式:
然后写一个这样的方法:
kpbpu0087#
我尝试过解决方案,但结尾为0时出现问题,有时用户只想输入0.01或
0.0001
,我不知道是否有其他人张贴了相同的答案或没有,但如果这有帮助,