问题格式化货币的EditText

时间:2012-06-26 01:26:36

标签: java android android-edittext currency

全部 - 我一直在努力解决这个问题并且已经查看了所有关于此类事情的其他问题,但我无法弄明白:我有一个edttext字段需要格式化为货币。我已经尝试了与此相关的所有其他问题中的代码,但无论我尝试它只是不起作用。这是我的代码:

EditText text = (EditText)findViewById(R.id.edit_bill);  

    text.setRawInputType(Configuration.KEYBOARD_12KEY);    

    text.addTextChangedListener(new TextWatcher(){
        EditText text = (EditText)findViewById(R.id.edit_bill);
        DecimalFormat dec = new DecimalFormat("0.00");
        public void afterTextChanged(Editable arg0) {
        }
        public void beforeTextChanged(CharSequence s, int start,
                int count, int after) {
        }
        public void onTextChanged(CharSequence s, int start,
                int before, int count) {
            if(!s.toString().matches("^\\$(\\d{1,3}(\\,\\d{3})*|(\\d+))(\\.\\d{2})?$"))
            {
                String userInput= ""+s.toString().replaceAll("[^\\d]", "");
                if (userInput.length() > 0) {
                    Float in=Float.parseFloat(userInput);
                    float percen = in/100;
                    text.setText("$"+dec.format(percen));
                    text.setSelection(text.getText().length());
                }
            }
        }
    });

此代码位于onClick方法中。这是否有所不同(例如,只有当用户点击按钮时才会格式化文本)?提前谢谢!

1 个答案:

答案 0 :(得分:2)

我过去曾使用这种方法来格式化资金。

static public String customFormat(String pattern, double s ) {
    DecimalFormat myFormatter = new DecimalFormat(pattern);
    String stringFormatOutput = myFormatter.format(s);
    return stringFormatOutput;
 } 

可以像这样使用:

String strPrice = customFormat("$###,##0.00", 300.2568);
mTxt.setText(strPrice);

只需将“300.2568”更改为您的价格即可。这可能对浮子而不是双打也有效。