为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

30秒到达战场 2023-03-17 15:20:33
我想在开始时使用TextWatcher向EditText添加3 个小数位 货币格式,值为0.000并且数字应该从右到左变化例如:如果我按 1、2、3、4、5 顺序值应显示为12.345以下代码仅适用于小数点后 2 位。请任何人帮助我如何将此代码更改为小数点后 3 位或其他解决方案 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 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

除以 1000 而不是 100,也setMinimumFractionDigits除以NumberFormat3。


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();

            nf.setMinimumFractionDigits(3);


            try{

                String formatted = nf.format(Double.parseDouble(digits)/1000);

                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) { }


}


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信