Android开发之EditText监听软键盘清除(输入是否清除)

当我们监听数据变化后再相应的位置新增符号,发现无法删除,所以有了下面的方法

我下面是监听400||800电话,每三位添加"-":例如400-855-8574

但是当我发现删除的时候到第七位就无法删除了,应该监听到第七位删除后有自动添加"-"了导致肉眼感觉到没有删除的假象

 

 etSafeAfterNumber.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                //监听之前的长度
                beforeLength = s.toString().length();
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                //判断是否为400||800开头电话
                if (TextUtils.isEmpty(s.toString())) {
                    return;
                }
                //监听变化后的长度
                int afterLength = s.toString().length();
                if (s.toString().startsWith("400") || s.toString().startsWith("800")) {
                    if (beforeLength < afterLength) {
                        //判断之前的长度小于变化后的长度才走添加"-",否则走正常删除逻辑
                        etSafeAfterNumber.setFilters(new InputFilter[]{new InputFilter.LengthFilter(12)});
                        String trim = etSafeAfterNumber.getText().toString().trim();
                        if (trim.length() == 3) {
                            etSafeAfterNumber.setText(new StringBuffer(trim).append("-"));
                            etSafeAfterNumber.setSelection(trim.length() + 1);
                        } else if (trim.length() == 7) {
                            etSafeAfterNumber.setText(new StringBuffer(trim).append("-"));
                            etSafeAfterNumber.setSelection(trim.length() + 1);
                        }
                    }
                } else {
                    etSafeAfterNumber.setFilters(new InputFilter[]{new InputFilter.LengthFilter(11)});
                }
            }
        });

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值