Android testview editText 输入价格(0.00的格式)和件数(没有小数)的监听器

这个是对价格,这个监听器是在别人写的基础上做了优化,只能输入一个点,当时两个的时候输入不进去的,
在主函数里面调取 unitprice = (TextView) findViewById(R.id.unitprice);
setPricePoint(unitprice);

public static void setPricePoint(final TextView editText) {
        editText.addTextChangedListener(new TextWatcher() {

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

                boolean zero = s.toString().trim().contains("0.00");
                if (zero) {
                    s = s.toString().subSequence(0, 1);
                    editText.setText(s);
                }

                if (s.toString().contains(".")) {
                    if (s.length() - 1 - s.toString().indexOf(".") > 2) {
                        s = s.toString().subSequence(0,
                                s.toString().indexOf(".") + 3);
                        editText.setText(s);
                    }
                }
                if (s.toString().trim().substring(0).equals(".")) {
                    s = "0" + s;
                    editText.setText(s);
                }
                if (s.toString().startsWith("0")
                        && s.toString().trim().length() > 1) {
                    if (!s.toString().substring(1, 2).equals(".")) {
                        editText.setText(s.subSequence(0, 1));
                        return;
                    }
                }
                if (dotNum(s.toString()) >= 2) {
                    s = s.toString().subSequence(0,
                            s.toString().lastIndexOf("."));
                    editText.setText(s);
                }

            }

            // .的个数
            public int dotNum(String dot) {
                int count = 0;
                for (int i = 0; i < dot.length(); i++) {
                    String s = dot.substring(i, i + 1);
                    if (s.contains("."))
                        count++;
                }
                return count;
            }

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

            }

            @Override
            public void afterTextChanged(Editable s) {

            }

        });

    }

输入个数的监听

public static void setPieceNum(final TextView testview) {
        testview.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                if (!isByPiece) {

                    // if (s.toString().startsWith("0")) {
                    // s = s.toString().subSequence(0, 1);
                    // editText.setText(s);
                    // }
                    if (s.toString().contains(".")) {
                        s = s.toString().subSequence(0,
                                s.toString().length() - 1);
                        testview.setText(s);
                    }

                }

            }

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

            }

            @Override
            public void afterTextChanged(Editable s) {

            }

        });

    }

里面的不管事testview edittext根据情况自由发挥了

猜你喜欢

转载自blog.csdn.net/u012922981/article/details/53018178