您的位置:首页 > 其它

银行卡号4位一空格

2017-03-24 15:36 155 查看
废话不多说,直接上图

布局文件中引用



一个自定义的edittext控件

public class HPEditText extends EditText {
private boolean isRun = false;
private String d = "";
public HPEditText(Context context) {
super(context);
setBankCardTypeOn();
}

public HPEditText(Context context, AttributeSet attrs) {
super(context, attrs);
setBankCardTypeOn();
}

public HPEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setBankCardTypeOn();
}

private void setBankCardTypeOn() {
HPEditText.this.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(isRun){
isRun=false;
return;
}
isRun = true;
d = "";
String newStr = s.toString();
newStr = newStr.replace(" ", "");
int index = 0;
while ((index + 4) < newStr.length()){
d += (newStr.substring(index, index + 4) + " ");
index += 4;
}
d += (newStr.substring(index, newStr.length()));
int i = getSelectionStart();
HPEditText.this.setText(d);
try {

if (i % 5 == 0 && before == 0) {
if (i + 1 <= d.length()) {
HPEditText.this.setSelection(i + 1);
} else {
HPEditText.this.setSelection(d.length());
}
} else if (before == 1 && i < d.length()) {
HPEditText.this.setSelection(i);
} else if (before == 0 && i < d.length()) {
HPEditText.this.setSelection(i);
} else
HPEditText.this.setSelection(d.length());

}catch (Exception e){

}
}

@Override
public void afterTextChanged(Editable s) {

}
});

}
//对外提供暴漏的方法
private void insertText(EditText editText, String mText) {
editText.getText().insert(getSelectionStart(), mText);

}
}


大家注意的是,取值时,一定要注意

et_idcard.getText().toString().replace(" ","");

用以上的方法取值,不然会得到空格

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