zoukankan      html  css  js  c++  java
  • 银行卡输入特效 4个加一空格

    private static final char kongge = ' ';
    private TextWatcher textWatcher=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) {
    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) {

    onTextLength = s.length();
    buffer.append(s.toString());
    if (onTextLength == beforeTextLength || onTextLength <= 3
    || isChanged) {
    isChanged = false;
    return;
    }
    isChanged = true;

    }

    @Override
    public void afterTextChanged(Editable s) {
    if (isChanged) {
    location = yourCardNumEd.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;
    }

    yourCardNumEd.setText(str);
    Editable etable = yourCardNumEd.getText();
    if (location>20){
    ToastUtil.ToastShow("最多才能输入20");
    return;
    }

    Selection.setSelection(etable, location);

    isChanged = false;
    }
    }

    };
  • 相关阅读:
    SpringData JPA接口总结
    使用allatori混淆代码
    Oracle查看表空间大小
    Mac常用命令
    Web.config或App.config下section
    ansi、unicode、UCS、UTF等概念(转)
    强名称程序集与GAC
    指针和引用的区别(转)
    .NET程序员应该知道些什么(转)
    dispose,null和close的区别
  • 原文地址:https://www.cnblogs.com/fajuaryzpf/p/5578583.html
Copyright © 2011-2022 走看看