zoukankan      html  css  js  c++  java
  • android 银行卡。。空格输入

    	class myWatcher implements TextWatcher {
    		int beforeTextLength = 0;
    		int onTextLength = 0;
    		boolean isChanged = false;
    
    		int location = 0;// 记录光标的位置
    		private char[] tempChar;
    		private StringBuffer buffer = new StringBuffer();
    		int konggeNumberB = 0;
    
    		@Override
    		public void onTextChanged(CharSequence s, int start, int before,
    				int count) {
    			// TODO Auto-generated method stub
    			onTextLength = s.length();
    			buffer.append(s.toString());
    			if (onTextLength == beforeTextLength || onTextLength <= 3
    					|| isChanged) {
    				isChanged = false;
    				return;
    			}
    			isChanged = true;
    		}
    
    		@Override
    		public void beforeTextChanged(CharSequence s, int start, int count,
    				int after) {
    			// TODO Auto-generated method stub
    			beforeTextLength = s.length();
    			if (buffer.length() > 0) {
    				buffer.delete(0, buffer.length());
    			}
    			konggeNumberB = 0;
    			for (int i = 0; i < s.length(); i++) {
    				if (s.charAt(i) == ' ') {
    					konggeNumberB++;
    				}
    			}
    		}
    
    		@Override
    		public void afterTextChanged(Editable s) {
    			// TODO Auto-generated method stub
    			if (isChanged) {
    				location = etAccount.getSelectionEnd();
    				int index = 0;
    				while (index < buffer.length()) {
    					if (buffer.charAt(index) == ' ') {
    						buffer.deleteCharAt(index);
    					} else {
    						index++;
    					}
    				}
    
    				index = 0;
    				int konggeNumberC = 0;
    				while (index < buffer.length()) {
    					if ((index == 4 || index == 9 || index == 14 || index == 19)) {
    						buffer.insert(index, ' ');
    						konggeNumberC++;
    					}
    					index++;
    				}
    
    				if (konggeNumberC > konggeNumberB) {
    					location += (konggeNumberC - konggeNumberB);
    				}
    
    				tempChar = new char[buffer.length()];
    				buffer.getChars(0, buffer.length(), tempChar, 0);
    				String str = buffer.toString();
    				if (location > str.length()) {
    					location = str.length();
    				} else if (location < 0) {
    					location = 0;
    				}
    
    				etAccount.setText(str);
    				Editable etable = etAccount.getText();
    				Selection.setSelection(etable, location);
    				isChanged = false;
    			}
    		}
    
    	}
    
    //给edititex  加入这个watcher

  • 相关阅读:
    iframeUpload
    获取当前文件路径。
    ie6 overflow 失效
    ie8 vml不显示
    json转换
    nodejs for windows
    模块化管理组件(2012/05/09)
    模块化管理组件v0.1
    Firefox和IE之间7个JavaScript的差异
    c输入函数细节
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5233594.html
Copyright © 2011-2022 走看看