Android-->自定义模版EditText(多用于手机号码,银行卡号等输入)
来源:互联网 发布:爱逛街淘宝网首页 编辑:程序博客网 时间:2024/06/05 16:09
先看看效果图:
方法其实很简单,都没啥好写的咯;
简单说一下思路吧:
1:首先从模版中,拿到关键点所在的位置,保存在List中.
private void initView() { if (!TextUtils.isEmpty(patternString)) { for (int i = 0; i < patternString.length(); i++) { if (splitList.contains(patternString.charAt(i))) { separatorPosition.add(i); } } }}
2:当onKeyUp事件发生的时候,检测文本,循环遍历getText(),如果是关键位置,就插入分隔符,否则如果是分隔符不在关键位置上,就删除,并且重新检查.
@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DEL) { //解决长按删除键无法删除的BUG removeCallbacks(delayCheck); postDelayed(delayCheck, 100); } else { checkPattern(); } return super.onKeyUp(keyCode, event);}private void checkPattern() { StringBuffer rawText = new StringBuffer(getText()); int selectionStart = getSelectionStart(); for (int i = 0; i < rawText.length(); i++) { char charAt = rawText.charAt(i); if (charAt == separatorChar) { rawText.delete(i, i + 1); if (i < selectionStart) { selectionStart--; } i--; } else if (isKeyPosition(i)) { rawText.insert(i, separatorChar); if (i < selectionStart) { selectionStart++; } } } setText(rawText); setSelection(Math.min(rawText.length(), selectionStart));}private boolean isKeyPosition(int position) { return separatorPosition.contains(position);}
3:没了.
需要注意的就是:
1:当插入分隔符之后,需要考虑光标的位置.
2:当长按删除键的时候,要处理一下,否则会无法实现长按删除.
源码:
https://github.com/angcyo/RJcenter/blob/master/rsen/src/main/java/com/rsen/view/PatternEditText.java
至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.
0 0
- Android-->自定义模版EditText(多用于手机号码,银行卡号等输入)
- Android自定义EditText实现手机号码和银行卡号自动分隔
- 【android】EditText输入银行卡号每四位空一格
- android edittext 输入手机号码格式变化
- XEditText:带删除功能的EditText;可设置自动添加分隔符分割电话号码、银行卡号等;支持禁止Emoji表情符号输入;自定义右边显示图标作功能选项;仿iOS输入框风格
- android的edittext输入银行卡默认4位一个空格
- 自定义组件-银行卡号输入框
- android 自定义日期输入 EditText
- 判断手机号码,邮箱,身份证,银行卡等
- android输入框EditText输入银行卡,输入手机,输入身份证格式化的实现
- Android EditText输入一串字符串自动每4个字符空一格,像输入银行卡卡号格式
- Android-->无障碍服务(AccessibilityService)开发指南(多用于抢红包,添加附近好友等功能)
- Android EditText 银行卡四位空一格
- Android EditText 银行卡四位空一格
- Android EditText 银行卡四位空一格
- android 银行卡。。空格输入
- iOS 数字格式化(手机号码 银行卡号 格式化,验证码输入控制)
- android 自定义属性,分享一个自适应容器,多用于显示图片,保证图片不变形
- Suddenly error='Cannot allocate memory' (errno=12) [closed]
- Java编程开发设计模式之--适配器模式(Adapter)
- redis服务端错误之 BeginForkOperation: system error caught. error code
- JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo使用详解
- Google vr -Android SDK API-com.google.vr.sdk.base--overview
- Android-->自定义模版EditText(多用于手机号码,银行卡号等输入)
- php session 保存数据库
- 找工作 准备
- BI商务智能对于企业的意义
- 【3】Java并发编程:多线程基本概念
- 有用的IT网站
- Android NotificationManager简读
- SVN版本控制与分支设置
- Java使用Socket读写邮件服务器示例