1. 程式人生 > >關於EditText的輸入小數點計算問題

關於EditText的輸入小數點計算問題

問題描述:

當edittext當中需要輸入小數點的時候,進行計算的話會有一些列問題出現,例如:格式不對、小數點位置不對、小數點後輸入0的問題

問題解決方法:

1)在輸入框新增一個監聽事件,會有3個方法重寫

第一個:onTextChanged   (也是最重要的一個,一般操作都是在這個方法中編寫)

//新增監聽的edittext為gongzi  

//當你直接輸入小數點的時候會自動加一個0.在前面

if (gognzi.getText().toString().indexOf(".") == 0) {
                    gognzi.setText("0" + gognzi.getText().toString());
                    gognzi.setSelection(gognzi.getText().toString().length());

//判斷你的文字是否有效
                } else if (gognzi.getText().toString().indexOf("0") == 0 && gognzi.getText().toString().length() > 1 && gognzi.getText().toString().substring(1).indexOf(".") != 0) {
                    gognzi.setText(gognzi.getText().toString().substring(1));
                    gognzi.setSelection(gognzi.getText().toString().length());
                //下面這個判斷是    判斷你.後面能輸入幾個小數(2個)

} else {
                    String[] text = arg0.toString().split("\\.", 2);
                    if (text[0].length() > 11) {
                        text[0] = text[0].substring(0, 11);
                    }
                    if (text.length > 1 && text[1].length() > 2) {
                        text[1] = text[1].substring(0, 2);
                    }


                    String value = text[0];
                    if (text.length > 1) {
                        value += "." + text[1];
                    }


                    if (!value.equals(gognzi.getText().toString())) {
                        gognzi.setText(value);
                        Editable etext = gognzi.getText();
                        Selection.setSelection(etext, etext.length());
                    }

                }


2)第二個 afterTextChanged:

在這裡面 的操作是:

            String text = s.toString();
            int len = s.toString().length();
            if (len == 1 && text.equals("0")) {
                s.clear();
            }

清空

3)第三個方法不用管


以上的方法就能輕鬆判斷你輸入框的 內容並不會報錯