主要使用了Text类下的子类TextWatcher
Summary
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
abstract void |
afterTextChanged(
Editable
s)
This method is called to notify you that, somewhere within
s , the text has been changed.
| ||||||||||
abstract void |
beforeTextChanged(
CharSequence
s, int start, int count, int after)
This method is called to notify you that, within
s , the
count
characters beginning at
start
are about to be replaced by new text with length
after .
| ||||||||||
abstract void |
onTextChanged(
CharSequence
s, int start, int before, int count)
This method is called to notify you that, within
s , the
count
characters beginning at
start
have just replaced old text that had length
before .
|
主要程序代码:
private EditText name;
name = (EditText) findViewById(R.id.name);
//设置监听
name.addTextChangedListener(name_TextWatcher);
private TextWatcher name_TextWatcher = new TextWatcher() {
private CharSequence temp;
private int editStart;
private int editEnd;
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
// name.setText(s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
temp = s;
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
editStart = name.getSelectionStart();
editEnd = name.getSelectionEnd();
//判断输入是不是中文字符 ^[\u4e00-\u9fa5]*$是中文字符串正则
if (!temp.toString().matches("^[\u4e00-\u9fa5]*$")) {
Toast.makeText(RegisterInit.this, "只能输入中文", Toast.LENGTH_SHORT).show();
if (s.length() != 0) {
s.delete(editStart - 1, editEnd);
}
int tempSelection = editStart;
name.setText(s);
name.setSelection(tempSelection);
}
}
};
如果有需要其他限制输入的只需要改变:
if (!temp.toString().matches("^[\u4e00-\u9fa5]*$")) {
Toast.makeText(RegisterInit.this, "只能输入中文", Toast.LENGTH_SHORT).show();