package cn.example.uppaydemo;import android.os.Bundle;import android.text.Editable;import android.text.Selection;import android.text.TextWatcher;import android.widget.EditText;import android.app.Activity;public class MainActivity extends Activity {private EditText et_pay;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);et_pay = (EditText) this.findViewById(R.id.et_pay);bankCardNumAddSpace(et_pay);}/** * 银行卡四位加空格 *  * @param mEditText */protected void bankCardNumAddSpace(final EditText mEditText) {mEditText.addTextChangedListener(new TextWatcher() {int beforeTextLength = 0;int onTextLength = 0;boolean isChanged = false;int location = 0;// 记录光标的位置private char[] tempChar;private StringBuffer buffer = new StringBuffer();int konggeNumberB = 0;@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {beforeTextLength = s.length();if (buffer.length() > 0) {buffer.delete(0, buffer.length());}konggeNumberB = 0;for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == ' ') {konggeNumberB++;}}}@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {onTextLength = s.length();buffer.append(s.toString());if (onTextLength == beforeTextLength || onTextLength <= 3|| isChanged) {isChanged = false;return;}isChanged = true;}@Overridepublic void afterTextChanged(Editable s) {if (isChanged) {location = mEditText.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 > konggeNumberB) {location += (konggeNumberC - konggeNumberB);}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;}mEditText.setText(str);Editable etable = mEditText.getText();Selection.setSelection(etable, location);isChanged = false;}}});}}

更多相关文章

  1. Android(安卓)DatabaseHelper
  2. android string.xml中显示特殊符号
  3. android mtk平台内置apk,可卸载恢复出厂设置还在
  4. Android(安卓)Studio & Typora 快捷键
  5. Android(安卓)之 Animation
  6. Android(安卓)strings.xml中空格符的标识方法附xml特殊字符表示
  7. android 开机铃音和开机图片以及系统自带的图标的位置
  8. Android(安卓)银行卡扫描识别获取卡号
  9. Android(安卓)- AppCompatEditText 重写,实现 3个文字中间使用空

随机推荐

  1. android-HandlerThread、IntentServer
  2. Android(安卓)progressbar实现带底部指示
  3. Android SQLite数据库中的表详解
  4. Anroid camera + mediacodec
  5. android的MediaPlayer的简介
  6. android底部标签页的tab实现
  7. Animation(2、帧动画)
  8. Android布局之RelativeLayout相对布局
  9. Android(安卓)Studio 报错 ERROR: Could
  10. Android(安卓)ApiDemos示例解析(102):Vie