• 安卓*自动添加空格效果-终极解决方案-亲测能用


    最近UI对于手机号输入框提出了要自动添加空格的需求,没办法,产品和UI就是大爷,说了就要做呀。

    但是在网上搜了好多资料,说着是能够实现,但是大多数都是无脑的Ctrl+C 和Ctrl+V,根本就没有实践过,就直接复制粘贴,完全是不负责任的。也不知道源头是谁。

    既然咱们踩过坑了,就要为后人修好路。

    在此留下这一条平坦大路给各位码农朋友。

    EditText et_login_phone = findViewById(R.id.et_login_phone);
            et_login_phone.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) {
                    String phone = s.toString();
                    //若有输入框处于编辑状态且有数据要显示删除叉号的需求,可以在此处处理
                    //clearPhone.setVisibility(phone.length() > 0 ? View.VISIBLE : View.GONE);
                    //将原始数据去空格处理
                    String value = phone.replace(" ", "");
                    //添加第三位数字后面的空格
                    if (value.length() > 3) {
                        value = value.substring(0, 3) + " " + value.substring(3, value.length());
                    }
                    //添加第7位数字后面的空格(因为第三位数字后面有个空格,所以是在字符串第8位后面添加空格)
                    if (value.length() > 8) {
                        value = value.substring(0, 8) + " " + value.substring(8, value.length());
                    }
                    et_login_phone.removeTextChangedListener(this);//赋值前,需要先将监听移除,不移除,会出现卡死的问题
                    et_login_phone.setText(value);//将添加空格之后的数据进行赋值
                    et_login_phone.addTextChangedListener(this);//赋值后,将监听添加到控件上
                    //输入指针至于输入内容尾部。
                    et_login_phone.setSelection(et_login_phone.getText().toString().length());
                }
    
                @Override
                public void afterTextChanged(Editable s) {
                }
            });
    

      如果您有更优雅的解决方案,欢迎一起讨论

  • 相关阅读:
    递归 正则表达式 杨辉三角
    js 获取浏览器高度和宽度值
    CSS样式大全
    P2501 [HAOI2006]数字序列 (LIS,DP)(未完成)
    Luogu1064 金明的预算方案 (有依赖的背包)
    Luogu2783 有机化学之神偶尔会做作弊 (树链剖分,缩点)
    Luogu5020 货币系统 (完全背包)
    Luogu2798 爆弹虐场 (二分,Kruskal)
    luogu1419 寻找段落 (二分,单调队列)
    Luogu1083 借教室 (线段树)
  • 原文地址:https://www.cnblogs.com/zxxiaoxia/p/13045438.html
Copyright © 2020-2023  润新知