因为需要,往往要对EditText的字符进行限制,但是Android处理xml文件中可以设置 digits 和 inputtype 属性外,似乎并没有直接对字符进行限制的办法。很不幸的是这些都有一定的局限性,因为我只需要排除空格,设置digits的话,中文要如何保证输入我真不会。刚开始学习安卓编程,java基础又稍有薄弱,于是我就开始百度了。


找到了这么一篇文章


关于 android 中 edittext 特殊字符过滤和字符长度限制的最优方法


其实这篇文章已经完成了拒绝输入指定空格或其他字符的功能,但我在实际使用中出现了一些问题。


当我将光标选在字段中间时,进行输入后光标会自行移回末尾,很明显这不适合实际应用。而原因就在mEditText.setSelection(mEditText.length());这句代码上,所以我稍做修改,改为了 mEditText.setSelection(start+count); 。


但仍有问题,我们要完成的作用是拒绝输入某些字符,但这些被我们拒绝的字符也被计入了count中,这样就会出错。所以呢,

if (!editable.equals(str)) {       mEditText.setText(str);  }  mEditText.setSelection(mEditText.length());  

将此改为

if (!editable.equals(str)) {      mEditText.setText(str);      mEditText.setSelection(start);  }  else  {      mEditText.setSelection(start+count);  } 

问题就解决了

刚刚发现,还存在些许问题,在粘贴含有指定字符的字段的时候光标位置会出错,这个就留到以后解决了

更多相关文章

  1. 分支和循环(二)(零基础学习C语言)
  2. 如何将uboot里面的参数传给recovery或kernel
  3. android访问传递有json格式字符串参数struts服务端
  4. Android微信支付功能集成【全攻略】
  5. Android(安卓)Intent用法总结
  6. Android(安卓)面试文档分享
  7. 使用Android(安卓)Studio+Spring Boot+MySQL数据库实现博客APP
  8. Android资源管理框架(Asset Manager)简要介绍
  9. Android的资源引用(1)(字符串、颜色、尺寸、数组)

随机推荐

  1. 关于Android(安卓)ListView组件中android
  2. android 调用人人网sdk登录页面 成功后不
  3. Android(安卓)Zxing修改为竖屏扫描,和连续
  4. Android代码混淆打包
  5. Android安装卸载程序具体操作方法解析
  6. Android(安卓)JNI 获取应用程序签名
  7. android 编译单个模块
  8. android 5.1禁止休眠
  9. android之发送短信的方法研究
  10. android触摸屏坐标手工校准/调整成功