美文网首页
Android实现输入手机号或身份证自动添加空格或者横线

Android实现输入手机号或身份证自动添加空格或者横线

作者: 不知道起什么名字的小白 | 来源:发表于2021-12-14 10:57 被阅读0次

    1.手机号添加空格方式

    binding.etContent.addTextChangedListener(object :TextWatcher {

    override fun beforeTextChanged(

    charSequence:CharSequence?,

    before:Int,

    count:Int,

    p3:Int

        ) {

    }

    override fun onTextChanged(

    charSequence:CharSequence?,

    start:Int,

    before:Int,

    count:Int

        ) {

    val length = charSequence?.length ?:0

            Log.d(TAG,"onTextChanged: ==" + charSequence)

    //基本上都是一个一个输入 count 是1

            if (count ==1) {

    /**

                 * 手机号为 11位 格式化为  181 2101 0518 需要加 俩空格 可以设置 maxLength 为11+2

                 * 在判断输入到第几位时加入空格

                 */

                if (length ==4 ||length ==9) {

    val sb = StringBuffer(charSequence)

    sb.insert(length -1,"\u2000")

    binding.etContent.setText(sb)

    // 设置光标

                    binding.etContent.setSelection(

    binding.etContent.getText().toString().length

                    )

    }

    }else if (before ==1) {

    // 删除的时候需要把空格删除掉

                val str = charSequence.toString().trim()

    binding.etContent.setText(str)

    // 设置光标

                binding.etContent.setSelection(

    binding.etContent.getText().toString().length

                )

    }

    }

    override fun afterTextChanged(p0:Editable?) {

    }

    })

    2. 身份证号码添加空格

    ```

    binding.etContent.addTextChangedListener(object : TextWatcher {

                override fun beforeTextChanged(

                    charSequence: CharSequence?,

                    before: Int,

                    count: Int,

                    p3: Int

                ) {

                }

                override fun onTextChanged(

                    charSequence: CharSequence?,

                    start: Int,

                    before: Int,

                    count: Int

                ) {

                    val length = charSequence?.length ?: 0

                    //基本上都是一个一个输入 count 是 1

                    if (count == 1) {

                        if (length == 5 || length == 10 || length == 15 || length == 20) {

                            val sb = StringBuffer(charSequence)

                            sb.insert(length - 1, "\u2000")

                            binding.etContent.setText(sb)

                            // 设置光标

                            binding.etContent.setSelection(

                                binding.etContent.getText().toString().length

                            )

                        }

                    } else if (before == 1) {

                        // 删除的时候需要把空格删除掉

                        val str = charSequence.toString().trim()

                        binding.etContent.setText(str)

                        // 设置光标

                        binding.etContent.setSelection(

                            binding.etContent.getText().toString().length

                        )

                    }

                }

                override fun afterTextChanged(p0: Editable?) {

                }

            })

    ```

    相关文章

      网友评论

          本文标题:Android实现输入手机号或身份证自动添加空格或者横线

          本文链接:https://www.haomeiwen.com/subject/vgyefrtx.html