银行卡输入

来源:互联网 发布:java微服务框架 hrp 编辑:程序博客网 时间:2024/06/10 02:53
bankid_ed.addTextChangedListener(new TextWatcher() {    //改变之前text长度    int beforeTextLength = 0;    //改变之前的文字    private CharSequence beforeChar;    //改变之后text长度    int onTextLength = 0;    //是否改变空格或光标    boolean isChanged = false;    // 记录光标的位置    int location = 0;    private char[] tempChar;    private StringBuffer buffer = new StringBuffer();    //已有空格数量    int konggeNumberB = 0;    @Override    public void beforeTextChanged(CharSequence s, int start, int count, int after) {        Log.i("liao", "before =" + s + "  : " + start + " : " + count + " : " + after);        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 onTextChanged(CharSequence s, int start, int before, int count) {        Log.i("liao", "on =" + s + " : " + start + " : " + before + " : " + count);        onTextLength = s.length();        buffer.append(s.toString());        if (onTextLength == beforeTextLength || onTextLength <= 3                || isChanged) {            isChanged = false;            return;        }        isChanged = true;    }    @Override    public void afterTextChanged(Editable s) {        Log.i("liao", "s = " + s);        if (isChanged) {            location = bankid_ed.getSelectionEnd();            int index = 0;            while (index < buffer.length()) {                if (buffer.charAt(index) == kongge) {                    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, kongge);                    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;            }            bankid_ed.setText(str);            Editable etable = bankid_ed.getText();            Selection.setSelection(etable, location);            isChanged = false;        }    }});
0 0
原创粉丝点击