这次遇到的问题是要对一个输入框可输入内容与长度做限制,以前的时候就在xml里面的EditText相应属性设置一下就好了

android:inputType="phone" // 电话android:inputType="text" // 文字android:inputType="number" // 数字

 长度也好搞,设置一个maxLength属性就ok了,但是如果需要限制输入的东西不是那种正好能概括的,上面的方法就不能用了,这个时候一般是用正则表达来限制输入。比如说,下面的代码就是对edittext限制了输入内容与输入长度的方法,中间是处理输入限制的逻辑,最后让edittext.setFilters,把这个过滤器放进去即可。

InputFilter filter = new InputFilter() {    @Override    public CharSequence filter(CharSequence source, int start, int end,                               Spanned dest, int dstart, int dend) {        String regEx = "^[a-zA-Z0-9\u4E00-\u9FA5]";  // 大小写的字母,0到9,汉字        Pattern p = Pattern.compile(regEx);        Matcher m = p.matcher(source);        String replace = m.replaceAll("").trim(); // 限制输入空格        // 输入前就存在的字符长度        int destCount = StringUtils.getCount(dest.toString());        // 输入前就已满直接不接收        if (destCount >= 32)            return "";        // 新输入的字符长度        int sourceCount = StringUtils.getCount(replace);        // 如果拼接后不超长,直接拼接        if (destCount + sourceCount <= 32)            return replace;        // 超长时不应该直接拒绝,应在允许范围内尽量拼接        if (destCount + sourceCount > 32)            return "";        return replace;    }};edittext.setFilters(new InputFilter[]{filter});

更多相关文章

  1. android.widget.TextView 属性详解
  2. Android animation 之视图动画、帧动画、属性动画的简单使用
  3. Android xml activity属性详解
  4. Android 关于EditText文字的显示问题 和属性

随机推荐

  1. Android的设计模式-解释器模式
  2. 50个Android开发人员必备UI效果源码
  3. Android的设计模式-原型模式
  4. Android的设计模式-桥接模式
  5. 50个Android开发人员必备UI效果源码
  6. Android的设计模式-迭代器模式
  7. Android的设计模式-访问者模式
  8. [Android]Android布局文件中的android:id
  9. Android的设计模式-命令模式
  10. Android的设计模式-单例模式