InputFilter filter = new InputFilter() { @Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
// TODO Auto-generated method stub
for (int i = start; i < end; i++)
{
//在这里判断输入的只能是英文字母和符号'-'
if (!Character.isLetter(source.charAt(i))
&& source.charAt(i) != '-')
{
return "";
}
}
return null;
}
}; etActivteCode.setFilters(new InputFilter[] { filter });
etActivteCode.addTextChangedListener(new TextWatcher() { @Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub etActivteCode.removeTextChangedListener(this);// 解除文字改变事件 if ((s.length() == 4 || s.length() == 9 || s.length() == 14)) {
etActivteCode.setText(s.toString().toUpperCase() + "-");// 转换
} else {
etActivteCode.setText(s.toString().toUpperCase());// 转换
} etActivteCode.setSelection(s.toString().length());// 重新设置光标位置
etActivteCode.addTextChangedListener(this);// 重新绑
String licensePlateNumber = etActivteCode.getText().toString()
.trim();
} @Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
} @Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub if (s.length() == 19) {
buttonActivate.setVisibility(View.VISIBLE);
InputMethodUtils.HideKeyboard(etActivteCode);
} }
});
etActivteCode.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_DEL) {
CommonUtils.LogWuwei(tag, "delete");
etActivteCode.setText("");
buttonActivate.setVisibility(View.INVISIBLE);
}
return false;
}
});
}
效果如下: