EditText输入手机号自动带空格

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

 

转载于:https://www.cnblogs.com/huangzx/p/4633094.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值