1

我有一个 EditText,用户应该在其中输入一个包含小数的数字,我希望在输入数字上自动添加一个千位分隔符我尝试了其他几种方法,但有些方法不允许浮点数,所以我想出了这个有效的代码只是字符串输入没有被实时编辑为一个可能有千位分隔符的字符串,并且错误似乎源于 s.replace();

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));
        }
    }
};
4

2 回答 2

0

我认为您应该setText()在更改文本后使用 edittext editext.setText(s);在替换字符串后执行类似的操作

于 2012-09-18T22:42:48.297 回答
0

简单s = s.replace(0, s.length(), nf2.format(value));s需要分配变量。

于 2014-01-24T11:10:09.007 回答