码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-05-12 17:39:11      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

一.简述需求

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) {

				}

				@Override
				public void beforeTextChanged(CharSequence s, int start,
						int count, int after) {
					str2 = et.getText().toString();
				}

				@Override
				public 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())

                }

               
				

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

				@Override
				public void afterTextChanged(Editable s) {
					
				}
			});
		}
	}

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




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

标签:

原文地址:http://blog.csdn.net/shayubuhuifei/article/details/51364334

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!