Android-->自定义模版EditText(多用于手机号码,银行卡号等输入)
2016-06-13 14:45
621 查看
先看看效果图:
方法其实很简单,都没啥好写的咯;
简单说一下思路吧:
1:首先从模版中,拿到关键点所在的位置,保存在List中.
2:当onKeyUp事件发生的时候,检测文本,循环遍历getText(),如果是关键位置,就插入分隔符,否则如果是分隔符不在关键位置上,就删除,并且重新检查.
3:没了.
需要注意的就是:
1:当插入分隔符之后,需要考虑光标的位置.
2:当长按删除键的时候,要处理一下,否则会无法实现长按删除.
源码:
https://github.com/angcyo/RJcenter/blob/master/rsen/src/main/java/com/rsen/view/PatternEditText.java
至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.
方法其实很简单,都没啥好写的咯;
简单说一下思路吧:
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(),如果是关键位置,就插入分隔符,否则如果是分隔符不在关键位置上,就删除,并且重新检查.
@Override public 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 欢迎您的加入.
相关文章推荐
- JAVA正则表达式 Pattern和Matcher
- Android中解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题
- Android2.3实现Android4.0风格EditText的方法
- Android中EditText+Button组合导致输入板无法收起的原因分析及解决办法
- Android GridView中包含EditText的焦点重新获取方法
- Android编程开发之EditText中不输入特定字符会显示相关提示信息的方法
- 解决EditText、ListView以及GridView同时使用,输入法自动跳出来的方法
- Android如何自定义EditText下划线?
- Android编程开发之EditText中inputType属性小结
- Android EditText常用属性功能汇总
- android同时控制EditText输入字符个数和禁止特殊字符输入的方法
- Android实现EditText控件禁止输入内容的方法(附测试demo)
- Android中EditText实现不可编辑解决办法
- Android编程实现在自定义对话框中获取EditText中数据的方法
- Android中EditText如何去除边框添加下划线
- Android中EditText光标在4.0中的bug及解决方法
- Android实现EditText中添加和删除bitmap的方法
- Android编程实现监听EditText变化的方法
- Android文本输入框(EditText)输入密码时显示与隐藏
- Android编程中EditText限制文字输入的方法