Android EditText输入一串字符串自动每4个字符空一格,像输入银行卡卡号格式
来源:互联网 发布:开放源代码软件 编辑:程序博客网 时间:2024/05/16 13:55
最近写类似需要像银行卡输入那样每4个字符空一格,网上看了很多都没有很好的解决索性自己写一个。主要思路就是活用beforeTextChanged()、onTextChanged()、afterTextChange()。代码测试过没有问题,可以在字符串中间任意位置添加删除字符。中间难点是光标位置,其实只是添加删除字符是没什么难度的。代码如下,贴出来方便以后自己查看~
String beforeStr = ""; String afterStr = ""; String changeStr = ""; int index = 0; boolean changeIndex = true; public void initListener() { et.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { beforeStr = s.toString(); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { afterStr = s.toString(); if (changeIndex) index = et.getSelectionStart(); } @Override public void afterTextChanged(Editable s) { if ("".equals(s.toString()) || s.toString() == null || beforeStr.equals(afterStr)) { changeIndex = true; return; } changeIndex = false; char c[] = s.toString().replace(" ", "").toCharArray(); changeStr = ""; for (int i = 0; i < c.length; i++) { changeStr = changeStr + c[i] + ((i + 1) % 4 == 0 && i + 1 != c.length ? " " : ""); } if (afterStr.length() > beforeStr.length()) { if (changeStr.length() == index + 1) { index = changeStr.length() - afterStr.length() + index; } if (index % 5 == 0 && changeStr.length() > index + 1) { index++; } } else if (afterStr.length() < beforeStr.length()) { if ((index + 1) % 5 == 0 && index > 0 && changeStr.length() > index + 1) { // index--; } else { index = changeStr.length() - afterStr.length() + index; if (afterStr.length() % 5 == 0 && changeStr.length() > index + 1) { index++; } } } et.setText(changeStr); et.setSelection(index); } }); }其中et是EditText控件~
1 0
- Android EditText输入一串字符串自动每4个字符空一格,像输入银行卡卡号格式
- appium使用sendkeys输入银行卡卡号(每4个数字自动空一格)总是输入不正确的解决办法
- appium使用sendkeys输入银行卡卡号(每4个数字自动空一格)总是输入不正确的解决办法
- 【android】EditText输入银行卡号每四位空一格
- Android中控制银行卡号的输入 即4个数字空一格
- IOS TextField 输入银行卡号格式化(每四位中间空一格)
- EditText每四位自动添加空格或者横线(银行卡输入格式,验券格式)
- Android EditText 银行卡四位空一格
- Android EditText 银行卡四位空一格
- Android EditText 银行卡四位空一格
- EditText输入字符,每4个字符 加上3个空格作为 分割符
- 输入银行卡号,每四位自动加一个空格
- IOS 银行卡每输入4位自动加空格
- 银行卡输入每4位自动加空格
- Android 监听EdiText 检测输入银行卡号每四位自动空格
- android - EditText监听输入多少个字符
- android的edittext输入银行卡默认4位一个空格
- 输入一串字符,读取第一个单词
- linux ps指令
- Bootstrap的Carousel不能正常播放的几个原因
- struts1.x国际化
- 关于本地存储localForage
- [解决方案]MySql提示:The server quit without updating PID file(…)失败
- Android EditText输入一串字符串自动每4个字符空一格,像输入银行卡卡号格式
- qt信号阻塞blockSignals的运用
- 用Robolectric来做Android单元测试
- REST中 @POST & @PUT 区别
- Runtime(三)方法与消息
- 静态编译动态编译;静态链接动态链接;静态库和动态库
- ubuntu中安装R及Rstudio
- SecureCRT 上应用Linux命令在Linux系统服务器中发布项目
- java 排序 算法与问题