原文地址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0708/3163.html
在android开发过程中,经常会要求用户输入手机号,为了便于观看,我们都会已135 xxxx xxxx这种格式展示。下面就带领大家实现这种功能。
1 public class PhoneTextWatcher implements TextWatcher { 2 3 private EditText _text; 4 5 public PhoneTextWatcher(EditText _text) { 6 this._text = _text; 7 } 8 9 10 @Override 11 public void beforeTextChanged(CharSequence s, int start, int count, int after) { 12 } 13 14 @Override 15 public void onTextChanged(CharSequence s, int start, int before, int count) { 16 17 if (s == null || s.length() == 0) return; 18 StringBuilder sb = new StringBuilder(); 19 for (int i = 0; i < s.length(); i++) { 20 if (i != 3 && i != 8 && s.charAt(i) == ' ') { 21 continue; 22 } else { 23 sb.append(s.charAt(i)); 24 if ((sb.length() == 4 || sb.length() == 9) && sb.charAt(sb.length() - 1) != ' ') { 25 sb.insert(sb.length() - 1, ' '); 26 } 27 } 28 } 29 if (!sb.toString().equals(s.toString())) { 30 int index = start + 1; 31 if (sb.charAt(start) == ' ') { 32 if (before == 0) { 33 index++; 34 } else { 35 index--; 36 } 37 } else { 38 if (before == 1) { 39 index--; 40 } 41 } 42 _text.setText(sb.toString()); 43 _text.setSelection(index); 44 } 45 46 } 47 48 @Override 49 public void afterTextChanged(Editable s) { 50 51 } 52 }
使用
phone= (EditText) findViewById(R.id.phone); phone.addTextChangedListener(new PhoneTextWatcher(phone));