如何使用TextWatcher Android将3位小数货币格式添加到edittext

时间:2019-07-09 13:18:42

标签: java android android-edittext number-formatting android-textwatcher

我想使用 TextWatcher EditText 添加 3个小数位 货币格式 开头的值为 0.000 ,数字应从右向左

例如:如果我按1,2,3,4,5的顺序值应该显示为 12.345

以下代码仅适用于2个小数位。请任何人帮助我 如何将此代码更改为小数点后三位 或其他解决方案

 public class CurrencyTextWatcher  implements TextWatcher {
    boolean mEditing;
    Context context;


    public CurrencyTextWatcher() {
        mEditing = false;
    }

    public synchronized void afterTextChanged(Editable s) {

        if(!mEditing) {
            mEditing = true;
            String digits = s.toString().replaceAll("\\D", "");
             NumberFormat nf = NumberFormat.getCurrencyInstance();

            try{
                String formatted = nf.format(Double.parseDouble(digits)/100);
                s.replace(0, s.length(), formatted);
            } catch (NumberFormatException nfe) {
                s.clear();
            }
            mEditing = false;
        }
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) { }

    public void onTextChanged(CharSequence s, int start, int before, int count) { }

}

1 个答案:

答案 0 :(得分:2)

除以1000而不是100,并且将setMinimumFractionDigits的{​​{1}}设为3。

NumberFormat