原文地址: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));

 

posted on 2015-07-09 14:33  道无涯  阅读(388)  评论(0编辑  收藏  举报