android之银行卡手机号码自动补齐空格

在app添加银行卡手机号码是时每四位补一个空格,以增加用户体验

一、银行卡

举例:银行卡号:6221553741546546566

效果:6221 5537 4154 6546 566

用到,addTextChangedListener,setSelection等函数

代码示例:



    public  static  void  fillBankNumSpeace(final  EditText mAddCardNumEdt){//银行卡补齐 空格

       mAddCardNumEdt.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence s, int start, int before,

                                      int count) {

                if (count == 1) {

                    if (s.length() == 4) {

                        mAddCardNumEdt.setText(s + " ");

                        mAddCardNumEdt.setSelection(5);

                    }

                    if (s.length() == 9) {

                        mAddCardNumEdt.setText(s + " ");

                        mAddCardNumEdt.setSelection(10);

                    }

                    if (s.length() == 14) {

                        mAddCardNumEdt.setText(s + " ");

                        mAddCardNumEdt.setSelection(15);

                    }

                    if (s.length() == 19) {

                        mAddCardNumEdt.setText(s + " ");

                        mAddCardNumEdt.setSelection(20);

                    }

                } else if (count == 0) {

                    if (s.length() == 4) {

                        mAddCardNumEdt.setText(s.subSequence(0,

                                s.length() - 1));

                        mAddCardNumEdt.setSelection(3);

                    }

                    if (s.length() == 9) {

                        mAddCardNumEdt.setText(s.subSequence(0,

                                s.length() - 1));

                        mAddCardNumEdt.setSelection(8);

                    }

                    if (s.length() == 14) {

                        mAddCardNumEdt.setText(s.subSequence(0,

                                s.length() - 1));

                        mAddCardNumEdt.setSelection(13);

                    }

                    if (s.length() == 19) {

                        mAddCardNumEdt.setText(s.subSequence(0,

                                s.length() - 1));

                        mAddCardNumEdt.setSelection(18);

                    }

                }

            }

            public void beforeTextChanged(CharSequence s, int start, int count,

                                          int after) {

            }

            public void afterTextChanged(Editable s) {

            }

        });

      }

注意:一般用户输入了第一遍卡号,要求再次输入账号,以验证两次卡号是否一致,这时不能直接调trim()去空格,再用 equals 比较,因为有的用户可能使用复制,粘贴功能,所以最好还是用replace("")去掉空格再比较。

   二、 手机号也一样

代码示例:

public  static  void  fillTelSpeace(final  EditText mAddCardNumEdt){//手机号码后 补齐 空格

       mAddCardNumEdt.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence s, int start, int before,

                                      int count) {

                if (count == 1) {

                    if (s.length() == 3) {

                        mAddCardNumEdt.setText(s + " ");

                        mAddCardNumEdt.setSelection(4);

                    }

                    if (s.length() == 8) {

                        mAddCardNumEdt.setText(s + " ");

                        mAddCardNumEdt.setSelection(9);

                    }

                    if (s.length() == 11) {

                        mAddCardNumEdt.setText(s + " ");

                        mAddCardNumEdt.setSelection(11);

                    }

                }  else if (count == 0) {

                    if (s.length() == 4) {

                        mAddCardNumEdt.setText(s.subSequence(0,

                                s.length() - 1));

                        mAddCardNumEdt.setSelection(3);

                    }

                    if (s.length() == 9) {

                        mAddCardNumEdt.setText(s.subSequence(0,

                                s.length() - 1));

                        mAddCardNumEdt.setSelection(8);

                    }

                    if (s.length() == 11) {

                        mAddCardNumEdt.setText(s.subSequence(0,

                                s.length() - 1));

                        mAddCardNumEdt.setSelection(10);

                    }
                } 

            }

            public void beforeTextChanged(CharSequence s, int start, int count,

                                          int after) {

            }

            public void afterTextChanged(Editable s) {

            }

        });

      }

 

你可能感兴趣的:(Android)