EditText社会安全号码

Hit*_*ani 2 android android-edittext

我正在为加州的android开发一个应用程序.现在我想以xxx-xx-xxxx格式输入编辑文本中的社会安全号码.我已经尝试使用以下代码来实现功能,但它不能正常清除文本..以下是我的代码.任何帮助,将不胜感激.我想要自动格式化功能.

etSocialSecurityNumber.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String text = etSocialSecurityNumber.getText().toString();
            textlength = etSocialSecurityNumber.getText().length();

            if(text.endsWith(" "))          
                return;


            if(textlength == 4 || textlength == 7 )
            {
                etSocialSecurityNumber.setText(new    StringBuilder(text).insert(text.length()-1, "-").toString());
                    etSocialSecurityNumber.setSelection(etSocialSecurityNumber.getText().length());
            }

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after)    {

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
Run Code Online (Sandbox Code Playgroud)

Ana*_*oid 6

这将添加一个 - 在每4个字符之后并且它处理所有类型的用户编辑,只需将你的条件设置为3和2个字符:

    edit_text.addTextChangedListener(new TextWatcher() {

        private boolean spaceDeleted;

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

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            CharSequence charDeleted = s.subSequence(start, start + count);
            spaceDeleted = " ".equals(charDeleted.toString());
        }

        public void afterTextChanged(Editable editable) {

            edit_text.removeTextChangedListener(this);

            int cursorPosition = edit_text.getSelectionStart();
            String withSpaces = formatText(editable);
            edit_text.setText(withSpaces);

            edit_text.setSelection(cursorPosition + (withSpaces.length() - editable.length()));


            if (spaceDeleted) {
                edit_text.setSelection(edit_text.getSelectionStart() - 1);
                spaceDeleted = false;
            }


            edit_text.addTextChangedListener(this);
        }

        private String formatText(CharSequence text)
        {
            StringBuilder formatted = new StringBuilder();
            int count = 0;
            for (int i = 0; i < text.length(); ++i)
            {
                if (Character.isDigit(text.charAt(i)))
                {
                    if (count % 4 == 0 && count > 0)
                        formatted.append("-");
                    formatted.append(text.charAt(i));
                    ++count;
                }
            }
            return formatted.toString();
        }
    });
Run Code Online (Sandbox Code Playgroud)

编辑:

    userNameET.addTextChangedListener(new TextWatcher() {

        private boolean spaceDeleted;

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

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            CharSequence charDeleted = s.subSequence(start, start + count);
            spaceDeleted = "-".equals(charDeleted.toString());
        }

        public void afterTextChanged(Editable editable) {

            userNameET.removeTextChangedListener(this);

            int cursorPosition = userNameET.getSelectionStart();
            String withSpaces = formatText(editable);
            userNameET.setText(withSpaces);

            userNameET.setSelection(cursorPosition + (withSpaces.length() - editable.length()));


            if (spaceDeleted) {
            //  userNameET.setSelection(userNameET.getSelectionStart() - 1);
                spaceDeleted = false;
            }


            userNameET.addTextChangedListener(this);
        }

        private String formatText(CharSequence text)
        {
            StringBuilder formatted = new StringBuilder();
            int count = 0;
            if(text.length()==3||text.length()==6)
            {
                if (!spaceDeleted)
                formatted.append(text+"-");
                else
                    formatted.append(text);
            }
            else
                formatted.append(text);
            return formatted.toString();
        }
    });
Run Code Online (Sandbox Code Playgroud)