其实这个手机号默认格式化,非常非常简单的,我们只需要TextChangerListener监听器就足够了


import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.EditText;/*** @author The sky seems to be raining* @class 手机号格式化,3-4-4的格式* @time 2019/9/6 4:08 PM* @Email penguinfool@163.com*/
public class TelEdittext extends EditText {public boolean isTel = true;private String addString = " ";private boolean isRun = false;public TelEdittext(Context context) {this(context, null);}public TelEdittext(Context context, AttributeSet attrs) {super(context, attrs);init();}private void init() {addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {Log.i("tag", "onTextChanged()之前");if (isRun) {//不加这个全局变量的判断;会导致onTextChanged()连续执行,出现死循环,为什么呢,文末会加以说明isRun = false;return;}isRun = true;Log.i("tag", "onTextChanged()");if (isTel) {String finalString = "";int index = 0;String telString = s.toString().replace(" ", "");if ((index + 3) < telString.length()) {finalString += (telString.substring(index, index + 3) + addString);index += 3;}while ((index + 4) < telString.length()) {finalString += (telString.substring(index, index + 4) + addString);index += 4;}finalString += telString.substring(index, telString.length());TelEdittext.this.setText(finalString);//此语句不可少,否则输入的光标会出现在最左边,不会随输入的值往右移动TelEdittext.this.setSelection(finalString.length());}}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void afterTextChanged(Editable s) {}});}
}解释一下,为什么会出现死循环呢
因为,每次输入的变化,都会响应这个change事件,就会重新调用一次,如果你在变化的回调中,setText,那么直接就会出现死循环,一次接一次的调用,就会出现内存溢出了,解释的不专业,大概就是这么个意思

Android 手机号输入格式化 3-3-4相关推荐

  1. iOS实现经典登录页面,手机号自动格式化

    iOS实现经典登录页面,手机号自动格式化 核心 #define RGB(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b ...

  2. Android中文输入的新选择——搜狗拼音输入法

    如果不是我的Google拼音输入法出了点问题,我大概不会去尝试搜狗的Android平台拼音输入法.虽然全键盘在竖屏的情况下非常难用,不过横屏的时候还是可以接受的,何况G1有物理键盘. 现在的问题是,我 ...

  3. Android系统--输入系统(一)必备的Linux知识_inotify和epoll

    Android系统--输入系统(一)必备的Linux知识_inotify和epoll 引入 1. 笔记本电脑插入外接键盘,两个键盘都可以使用 a. 键盘即插即用--如何检测键盘的接入和拔出 hotpl ...

  4. Android系统--输入系统(八)Reader线程_使用EventHub读取事件

    Android系统--输入系统(八)Reader线程_使用EventHub读取事件 1. Reader线程工作流程 获得事件 size_t count = mEventHub->getEvent ...

  5. android edittext 输入手机号码格式变化

    android edittext 输入内容只能是xxx-xxxx-xxxx格式的手机号码 EditText phoneEt = (EditText) findViewById(R.id.phone_e ...

  6. 用javascript写一个简单的登录表单,包含用户名、密码和手机号码。提交数据时验证用户名、密码和手机号输入格式。

    题目:写一个用于登录的表单,包含用户名.密码和手机号码.提交数据的时候,要求验证: 1. 用户名必须输入汉字: 2. 密码总共6位,前2位为字母,后4位为数字: 3. 手机号码符合中国大陆手机号码格式 ...

  7. Android EditText输入光标居于开头最开始位置

    Android EditText输入光标居于开头最开始位置 Android的EditText输入光标默认是居于整个EditText的中心位置的,如图所示: 如果欲使EditText加载后的输入光标自动 ...

  8. Android 语音输入API使用

    Android 语音输入API使用 转载http://www.javaarch.net/jiagoushi/782.htm Android已经支持语音输入的API了,不过不知道中文输入识别效果怎么样. ...

  9. 你不会还在机械重复的输入格式化信息吧?snippet配置来帮你一键生成

    你不会还在机械重复的输入格式化信息吧?snippet配置来帮你一键生成   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站.华为开发者论坛等平台分享一 ...

  10. android缅甸语,Android键盘输入语言设置默认打开myanmar缅甸语的步骤

    不管你在学什么语言,当你觉得自己不擅长的时候,突然听到你的老师或其他人用你认为自己不擅长的语言流畅地交谈,你会感到热血沸腾,下面我们就跟着爱站技术频道小编一起来了解键盘输入语言设置默认打开myanma ...

最新文章

  1. python array与 list区别
  2. 网络专业人士笔记(1~4章)
  3. 互联网协议入门(二)
  4. 蓄电池单格电压多少伏_蓄电池充电规范手册
  5. NPOI 操作EXCEL 小计
  6. ASP.NET中WEB上弹出消息框的N种方法(为了以后方便,转了很多网友的文章!希望不会介意)...
  7. python三本经典书籍-关于 Python 的经典入门书籍有哪些?
  8. 利用iisnode模块,让你的Node.js应用跑在Windows系统IIS中
  9. excel vba导入html表格,Excel VBA读取网址API 类Json数据并写入单元格的方法
  10. mybatis-plus主键生成策略
  11. 获取json格式的内容数据时,使用的方法避免空指针
  12. 针对部分软件无法开机自启动情况的解决措施(已解决)
  13. eda技术试卷_EDA技术及应用试卷D含答案
  14. 控制工程基础学习笔记-第6章 控制系统的误差分析和计算
  15. 沪牌软件操作开发说明
  16. java计算机毕业设计智慧防疫上报系统服务端源码+数据库+系统+lw文档
  17. 计算机实训安全教育,暑期实践 | 计算机学院举行暑期社会实践动员暨安全教育大会...
  18. android 华为mate 获取定位权限,【严重安全问题】开启了定位权限,但是软件还是没权限...
  19. 计组复习-cache
  20. JQuery处理json数据实例(map和数组)

热门文章

  1. php laravel vonder
  2. C++使用模板重载vector的加减法实现矩阵向量加减法
  3. 2016一路有你,2017一起同行
  4. TextView中动态显示某些值
  5. Java导入Excel文档到数据库
  6. 我是如何来进行项目管理-时间管理的
  7. 入侵检测领域数据集总结
  8. 感知机为什么不能表示“异或”?
  9. 【高中必修二】几何体
  10. 软件生命周期是什么?