关于EditText的输入数字校验的问题

来源:互联网 发布:js生成1-100随机整数 编辑:程序博客网 时间:2024/06/06 11:50

一.简述需求

1.需求是输入数字是删除第一位数字后位是0的禁止删除(如支付宝)

2.需求是可以删除任何位置的数字。如果删除第一位后面是0,就去掉无效的0

二.具体的实际例子如:

1010需求1来做:删除第一位是禁止删除

1010需求2来做:删除第一位变成10

三.下面具体上代码

方式一

private void subEditTextString(final EditText et) {if (et != null) {et.addTextChangedListener(new TextWatcher() {String str2 = "";public void onTextChanged(CharSequence s, int start,int before, int count) {}@Overridepublic void beforeTextChanged(CharSequence s, int start,int count, int after) {str2 = et.getText().toString();}@Overridepublic void afterTextChanged(Editable s) {String sss = et.getText().toString();                    if ("".equals(sss)) {                        // et.setText("");                        return;                    } else {                        char c = sss.charAt(0);                        if ("0".equals(c + "")) {                            et.setText(str2);                            et.setSelection(str2.length() + 1);                        }                    }}});}}
方式二

private void subEditTextString(final EditText et) {         if (et != null) {            et.addTextChangedListener(new TextWatcher() {             Arraylist<String> list;                public void onTextChanged(CharSequence s, int start,                        int before, int count) {                            String str = et.getText().toString();                        Pattern p = Pattern.compile("[1-9]\\d*");                       Matcher m = p.matcher(str);                       list = new ArrayList<String>();                            while (m.find()) {                               list.add(m.group(0));                             }                       if (list.size()>0) {                       System.out.println(list.size() + list.get(0));                        et.removeTextChangedListener(this);                           et.setText(list.get(0));                       et.addTextChangedListener(this);                     }else{                    et.removeTextChangedListener(this);                    et.setText("");                   et.addTextChangedListener(this);                  }                      et_charge_money.setSelection(et.getText().toString().length())                }               @Overridepublic void beforeTextChanged(CharSequence s, int start,int count, int after) {}@Overridepublic void afterTextChanged(Editable s) {}});}}

以上基本是两种效果,如有问题欢迎指教




0 0
原创粉丝点击