Android中使用TextWatcher限制输入内容的形式

主要使用了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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值