如何格式化edittext(android)

时间:2013-08-12 21:26:06

标签: android android-edittext

我需要格式化EditText以添加点。

如果输入的数字超过3个,请在第一个数字后加点(如:1.000)

但是当输入有超过4个数字时,将点放在第二个数字后面(如:10.000)

我已经尝试addTextChangedListener,但它没有用。

1 个答案:

答案 0 :(得分:0)

此算法用于在末尾添加数字并移动点,如下一个示例所示:

你有0.00的开头 插入1并具有0.01 插入5并且有0.15 插入9并具有1.59

尝试修改该代码并使其适应您的需要。

youtEditText.addTextChangedListener( new TextWatcher() {
            boolean mEditing = false;

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

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

            public void afterTextChanged(Editable s) {
                if(!mEditing) {
                    mEditing = true;
                    String digits = s.toString().replaceAll("\\D", "");
                    NumberFormat nf = new DecimalFormat( "#,##0.00" );
                    try{
                        String formatted = nf.format(Double.parseDouble(digits)/100);
                        s.replace(0, s.length(), formatted);
                    } catch (NumberFormatException nfe) {
                        s.clear();
                    }
                    mEditing = false;
                }
            }
        });

另外一件事是你需要把重点放在文本的末尾,你可以用下一个代码来做到这一点:

yourEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus){
                    amount.setSelection(amount.getText().length());
                }
            }
        }); 

我希望能帮助你。