0

我需要格式化一个EditText来添加一个点。

当输入的数字超过 3 个时,将点放在第一个数字之后(例如:1.000)

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

我已经尝试过addTextChangedListener了,但是没有用。

4

1 回答 1

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

我希望这可以帮助你。

于 2013-08-12T21:41:45.137 回答