EditText输入自动空格
2016-01-22 00:00
246 查看
摘要: 主要针对银行卡号的输入
在代码中调用
package cn.juzhong.util; import android.text.Editable; import android.text.Selection; import android.text.TextWatcher; import android.widget.EditText; public class EditTextUtil implements TextWatcher{ private int beforeTextLength = 0; //输入前的长度 private int onTextLength = 0; //文字的长度 private boolean isChanged = false; private int location = 0;//记录光标的位置 private char[] tempChar; private StringBuffer buffer = new StringBuffer(); private int blankNumber = 0; private EditText editText; public EditTextUtil(EditText text){ editText = text; } @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub if(isChanged){ location = editText.getSelectionEnd(); int index = 0; while (index < buffer.length()) { if (buffer.charAt(index) == ' ') { buffer.deleteCharAt(index); } else { index++; } } index = 0; int konggeNumberC = 0; while (index < buffer.length()) { if ((index == 4 || index == 9 || index == 14 || index == 19)) { buffer.insert(index, ' '); konggeNumberC++; } index++; } if (konggeNumberC > blankNumber) { location += (konggeNumberC - blankNumber); } tempChar = new char[buffer.length()]; buffer.getChars(0, buffer.length(), tempChar, 0); String str = buffer.toString(); if (location > str.length()) { location = str.length(); } else if (location < 0) { location = 0; } editText.setText(str); Editable etable = editText.getText(); Selection.setSelection(etable, location); isChanged = false; } } @Override public void beforeTextChanged(CharSequence text, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub beforeTextLength = text.length(); if(buffer.length() > 0){ buffer.delete(0, buffer.length()); } blankNumber = 0; for(int i = 0;i < text.length();i ++){ if(text.charAt(i) == ' '){ blankNumber ++; } } } @Override public void onTextChanged(CharSequence text, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub onTextLength = text.length(); buffer.append(text.toString()); if(onTextLength == beforeTextLength || onTextLength <= 3 || isChanged){ isChanged = false; return; } isChanged = true; } }
在代码中调用
bankNumberEditText.addTextChangedListener(new EditTextUtil(bankNumberEditText));
相关文章推荐
- SpringMVC参数绑定---对象绑定
- MindMapper内置浏览器如何进行使用
- arm-linux头文件相关
- 即时通讯发消息出现ListView左边视图突然闪现,再加载右边视图的bug
- Android ORMLite的使用
- 别让惰性控制你
- 教你Zbrush中的四种裁切笔刷
- 2016/01/22 Python学习3
- 自定义SQL函数 实现SPlit字符截取功能
- 蜂窝教育安卓改变我的命运 现已是高薪工程师
- java视频教程之十个程序员要知道的调试技巧
- joomla第一单元第八节模板介绍和第九节模块管理
- joomla第一单元第十节K2内容模板和K2模块样式
- Oracle数据操作之默认0为' '
- android studio使用教程(九)eclipse工程导入studio中乱码解决方案
- 228,多线程之延迟加载实例
- 可视化分析2015年中国内地电影总票房Top25
- 十步完全理解SQL
- js中获取元素自身样式
- javascript多物体运动元素共享?no