您的位置:首页 > 其它

银行卡四位加空格

2012-09-10 12:53 141 查看
EditText et_cardNum = (EditText) findViewById(viewId);

bankCardNumAddSpace(et_cardNum);

/**

* 银行卡四位加空格

* @param mEditText

*/

protected void bankCardNumAddSpace(final EditText mEditText){

mEditText.addTextChangedListener(new 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 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 = mEditText.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;

}

mEditText.setText(str);

Editable etable = mEditText.getText();

Selection.setSelection(etable, location);

isChanged = false;

}

}

});

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: