SpaceTextWatcher

android输入框输入银行卡,输入手机,输入身份证格式化的实现

项目地址

SpaceTextWatcher

实现方式

    @Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {beforeTextLength = s.length();if (buffer.length() > 0) {buffer.delete(0, buffer.length());}spaceNumberA = 0;for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == ' ') {spaceNumberA++;}}}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {onTextLength = s.length();buffer.append(s.toString());if (onTextLength == beforeTextLength || onTextLength > maxLenght|| isChanged) {isChanged = false;return;}isChanged = true;}@Overridepublic void afterTextChanged(Editable s) {if (isChanged) {location = editText.getSelectionEnd();int index = 0;while (index < buffer.length()) { // 删掉所有空格if (buffer.charAt(index) == ' ') {buffer.deleteCharAt(index);} else {index++;}}index = 0;int spaceNumberB = 0;while (index < buffer.length()) { // 插入所有空格spaceNumberB = insertSpace(index, spaceNumberB);index++;}String str = buffer.toString();// 下面是计算光位置的if (spaceNumberB > spaceNumberA) {location += (spaceNumberB - spaceNumberA);spaceNumberA = spaceNumberB;}if (isSetText) {location = str.length();isSetText = false;} else if (location > str.length()) {location = str.length();} else if (location < 0) {location = 0;}editText.setText(str);try {editText.setSelection(location);} catch (Exception e) {e.printStackTrace();}isChanged = false;}}/**
     * 根据类型插入空格
     *
     * @param index
     * @param spaceNumberAfter
     * @return
     * @see [类、类#方法、类#成员]
     */private int insertSpace(int index, int spaceNumberAfter) {switch (spaceType) {case defaultType:// 相隔四位空格if (index > 3&& (index % (4 * (spaceNumberAfter + 1)) == spaceNumberAfter)) {buffer.insert(index, ' ');spaceNumberAfter++;}break;case bankCardNumberType:if (index > 3&& (index % (4 * (spaceNumberAfter + 1)) == spaceNumberAfter)) {buffer.insert(index, ' ');spaceNumberAfter++;}break;case mobilePhoneNumberType:if (index == 3|| ((index > 7) && ((index - 3) % (4 * spaceNumberAfter) == spaceNumberAfter))) {buffer.insert(index, ' ');spaceNumberAfter++;}break;case IDCardNumberType:if (index == 6|| ((index > 10) && ((index - 6) % (4 * spaceNumberAfter) == spaceNumberAfter))) {buffer.insert(index, ' ');spaceNumberAfter++;}break;default:if (index > 3&& (index % (4 * (spaceNumberAfter + 1)) == spaceNumberAfter)) {buffer.insert(index, ' ');spaceNumberAfter++;}break;}return spaceNumberAfter;}/***
     * 计算需要的空格数
     *
     * @return 返回添加空格后的字符串长度
     * @see [类、类#方法、类#成员]
     */private int computeSpaceCount(CharSequence charSequence) {buffer.delete(0, buffer.length());buffer.append(charSequence.toString());int index = 0;int spaceNumberB = 0;while (index < buffer.length()) { // 插入所有空格spaceNumberB = insertSpace(index, spaceNumberB);index++;}buffer.delete(0, buffer.length());return index;}

使用方法

        AddSpaceTextWatcher[] asEditTexts=new AddSpaceTextWatcher[3];EditText[] editTexts=new EditText[3];editTexts[0]=(EditText)findViewById(R.id.editText);//银行卡editTexts[1]=(EditText)findViewById(R.id.editText2);//手机号editTexts[2]=(EditText)findViewById(R.id.editText3);//身份证asEditTexts[0]=new AddSpaceTextWatcher(editTexts[0],48);//银行卡asEditTexts[0].setSpaceType(AddSpaceTextWatcher.SpaceType.bankCardNumberType);asEditTexts[1]=new AddSpaceTextWatcher(editTexts[1],13);//手机号asEditTexts[1].setSpaceType(AddSpaceTextWatcher.SpaceType.mobilePhoneNumberType);asEditTexts[2]=new AddSpaceTextWatcher(editTexts[2],21);//身份证asEditTexts[2].setSpaceType(AddSpaceTextWatcher.SpaceType.IDCardNumberType);

关于作者Robin

  • 屌丝程序员
  • GitHub: Robin-jiangyufeng
  • QQ:429257411
  • 交流QQ群 236395044

android输入框EditText输入银行卡,输入手机,输入身份证格式化的实现相关推荐

  1. android edittext输入邮箱,[Android教程]EditText怎样限制用户的输入?数字/字母/邮箱

    有输入必有验证.为了防止用户随便输入确保提交数据的合法性,程序不得不在文本输入框(EditText)中增加限制或验证. 关于输入类型有数字.字母.邮箱.电话等形式,这些具体得根据业务来.那么Andro ...

  2. 手机调用系统的拍照和裁剪功能,假设界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。...

    1. 拍照裁剪后 点击EditText会弹出输入法,却不能输入.可是点击点一EdtiText就能够输入了,所以我就写了一个看不见的EdtiText,切换焦点,这样就攻克了这个奇怪的这问题,应该是and ...

  3. android模拟器EditText 不能用物理键盘输入,也不能用电脑键盘输入

    昨天升级了SDK,ADT,发现原来可以在EditText里面使用电脑的键盘输入的功能,现在无法输入了,连模拟器的无力键盘也不行,只能使用虚拟键盘,非常麻烦,还有在baidu里有如下方法,只是在Crea ...

  4. Android实战场景 - 输入手机号、银行卡号、身份证号时动态格式化

    在日常项目开发中,如果稍微严谨点的话,其中关于手机号.银行卡号.身份证号的输入格式有做了限制格式化操作,主要是为了给用户带来更好的体验感: 最近同事正好问到了我这个问题,虽然以前做过这类型功能,但是并 ...

  5. Android 输入框(EditText)的输入限制,数字英文邮箱,可见\隐藏切换,踩过的坑!

    目录 一.输入框的输入限制 1.在xml文件里通过设置属性限制输入 2.在代码里动态设置输入限制 二.密码可见性切换和遇到的坑 最近做到了登录注册模块的各种输入判定,监听等等,因为需求上的需要,还是搞 ...

  6. android 输入框不可输入中文,Android学习笔记 —— Android 开发中,限制 EditText 输入框不能输入中文(汉字)...

    今天在练习开发一个小项目的时候,需要限制 EditText 输入框不能输入中文(汉字),在网上找了很多例子, 结合自己的实际,终于完成了这一功能.现在把代码记录下来,方便以后查找! 首先是xml布局文 ...

  7. Android开发之adb命令输入文本到手机输入框中的方法

    当我们使用模拟器调试,有时候输入法不方便输入或者被限制输入部分文本格式了,如何输入? 这来就有了如下命令了:adb shell input text "123456789" 我们看 ...

  8. android textview电话号码,Android应用开发之Android EditTextView 实现带空格分隔的输入(电话号码,银行卡)...

    本文将带你了解Android应用开发Android EditTextView 实现带空格分隔的输入(电话号码,银行卡),希望本文对大家学Android有所帮助. 电话号码输入框需求: 三位,七位后有空 ...

  9. Android EditText定制粘贴和定制输入

    前言 EditText是大家比较熟悉的输入框控件,我们长按,可以使用系统自带的复制粘贴功能:另外获得焦点后,也能和输入法进行交互,实现文字的输入! 如果一个EditText,没有设置任何style,我 ...

最新文章

  1. 项目描述_单元测试技巧:创建描述性测试
  2. numpy中的ndim、shape、dtype、astype
  3. MySQL如何存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别
  4. Spring Boot——[Unable to start LiveReload server]解决方案
  5. “stdafx.h”: No such file or directory
  6. Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math 数学
  7. mysql不同的类的个数_Mysql数据库-SQL优化-统计某种类型的个数
  8. 【不用拔插U盘也可以继续使用】
  9. 深圳的小伙伴有福利了!
  10. 手机上ftp测试软件,ftp工具手机版
  11. Mockplus原型设计工具介绍
  12. python统计文章中高频词汇并生成词云
  13. “特质波动率之谜”(Idiosyncratic Volatility),用Python计算特质波动率
  14. Itext使用 Java导出PDF
  15. 南京大学计算机专业拂晓,南京大学2020年计算机学科录取推免生222人,全部来自211高校...
  16. 中南民大 通原复习ch3之随机过程
  17. 三款免费杀毒软件+clamAV
  18. 51、C# 图片中非白色动态转换成红色,主要应用于指纹图片,呈现红色印泥效果
  19. 上级对下级用通知合适吗_切记!这几句话千万不要对领导说
  20. 软件测试 中静态测试与动态测试的区别

热门文章

  1. 价值一个亿的 AI 核心代码!开源了~
  2. WEBAR入门--凤凰腾飞
  3. 数字化时代,企业的商业模式建设
  4. hdfs中acl权限管理的简单实用
  5. java程序对学生成绩_Eclipse+Java+Swing实现学生成绩管理系统的实例代码
  6. ​在分类中如何处理训练集中不平衡问题​
  7. Sublime代码编辑器中代码高亮显示
  8. Flask-WTF 示例
  9. 售票系统的组件图和部署图_组件图和部署图详解.ppt
  10. 普洱熟茶发霉时应该怎样处理?