第一次写博客写的对与不对大家多多见谅~~也希望大家批评指正~~~

需求一:EditText输入取货码券码做四位分割,删除过程中也自动四位分割。主要都是逻辑:

给EditText添加TextWatcher方法 ,在onTextChanged中控制添加空格逻辑。

   mCodeEditText.addTextChangedListener(new TextWatcher() {            @Override            public void beforeTextChanged(CharSequence s, int start, int count, int after) {            }            @Override            public void onTextChanged(CharSequence s, int start, int before, int count) {                if (s == null || s.length() == 0) return;                StringBuilder sb = new StringBuilder();                for (int i = 0; i < s.length(); i++) {                    if (i != 4 && i!= 9 && i != 14  && s.charAt(i) == ' ') {                        continue;                    } else {                        sb.append(s.charAt(i));                        if ((sb.length() == 5 || sb.length() == 10|| sb.length() == 15) && sb.charAt(sb.length() - 1) != ' ') {                            sb.insert(sb.length() - 1, ' ');                        }                    }                }                if (!sb.toString().equals(s.toString())) {                    int index = start + 1;                    if (sb.charAt(start) == ' ') {                        if (before == 0) {                            index++;                        } else {                            mCodeEditText.setText(sb.subSequence(0, sb.length() - 1));                            index--;                        }                    } else {                        if (before == 1) {                            index--;                        }                    }                    mCodeEditText.setText(sb.toString());                    mCodeEditText.setSelection(index);                }            }            @Override            public void afterTextChanged(Editable s) {            }        });

不了解TextWatcher方法的可以看看下面:
   
mCodeEditText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // s表示改变之前的内容,通常start和count组合,可以在s中读取本次改变字段中被改变的内容。 // start 开始的位置 // count 被改变的旧内容数量 // after 改变后的内容数量 LogUtil.i(TAG, "beforeTextChanged s="+s.toString()); LogUtil.i(TAG, "beforeTextChanged start="+start); LogUtil.i(TAG, "beforeTextChanged after="+after); LogUtil.i(TAG, "beforeTextChanged count="+count); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { //这里的s表示改变之后的内容,通常start和count组合,可以在s中读取本次改变字段中新的内容。而before表示被改变的内容的数量。 //start 开始位置 //before 改变前的内容数量 //int count 新增数 LogUtil.i(TAG, "onTextChanged s="+s.toString()); LogUtil.i(TAG, "onTextChanged start="+start); LogUtil.i(TAG, "onTextChanged before="+before); LogUtil.i(TAG, "onTextChanged count="+count); } @Override public void afterTextChanged(Editable s) {//表示最终内容 LogUtil.i(TAG, "afterTextChanged s="+s.toString()); } });


更多相关文章

  1. 安卓学习第三天
  2. 一培训机构设计的学习android课程内容:供大家参考
  3. Android(安卓)中的内容观察者ContentObserver
  4. 在android上用HttpURLConnection获取网页内容
  5. Android实现搜索保存历史记录功能
  6. Android(安卓)Zxing创建带文字的一维码(条形码)
  7. ToolBar随ScrollView的滚动改变透明度
  8. android小功能实现之文件读写
  9. 关于 android:windowSoftInputMode 的设置

随机推荐

  1. android 判断文件是否存在
  2. Android客户端自动更新代码
  3. Android Intent中的FLAG,很全
  4. Android之MediaPlayer(两种)基本使用方式
  5. android 客户端 smtp 协议发送数据
  6. [Android] 动态语言切换
  7. spotlight android app which likes spot
  8. android的样式(style)与主题(theme)
  9. Android用户定位Google Map显示地图
  10. Android ScrollView + ListView嵌套使用