最近在写一个会员卡的一个模块,需要输入一个12位的会员卡号,看到很多软件在输入卡号的时候都是4位一个空格,这样客户在输入的时候就不容易出错,还比较好看,就想着如何去实现一样的效果,自己尝试了许久没有实现出来,最后在网上看到大神有实现的效果,我在此分享出来,供大家参考:
package cn.agiledata.ipos.view;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
public class SpaceText implements TextWatcher {
private String TAG = "SpaceText";
private EditText etSpace;
int beforeTextLength = 0;
int onTextLength = 0;
public SpaceText(EditText etSpace) {
super();
this.etSpace = etSpace;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
beforeTextLength = s.length();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String str = etSpace.getText().toString();
onTextLength = str.length();
if (onTextLength > beforeTextLength) {
if (str.length() == 5 || str.length() == 10 || str.length() == 15
|| str.length() == 20) {
etSpace.setText(new StringBuffer(str).insert(str.length() - 1,
" ").toString());
etSpace.setSelection(etSpace.getText().length())
}
} else {
if (str.startsWith(" ")) {
etSpace.setText(new StringBuffer(str).delete(onTextLength - 1,
onTextLength).toString());
etSpace.setSelection(etSpace.getText().length());
}
}
}
}
在使用处:
editText.addTextChangedListener(new SpaceText(editText));
最后就实现了这样的效果,很简单,很实用!