Custom format edit text input android to accept credit card number

后端 未结 8 885
终归单人心
终归单人心 2020-11-29 01:46

how to make edit text accept input in format

4digitnumber-4dignumber-4dignumber-4dignumber   

The code

text.addTextChangedL         


        
8条回答
  •  醉酒成梦
    2020-11-29 02:35

    It works in all cases, when you insert or remove a character, the format will always be right. Make sure you set

    android:inputType="number"
    

    /

    myEditText.addTextChangedListener(new TextWatcher() {
            private final String space = "-"; // you can change this to whatever you want
            private final Pattern pattern = Pattern.compile("^(\\d{4}"+space+"{1}){0,3}\\d{1,4}$"); // check whether we need to modify or not
            @Override
            public void onTextChanged(CharSequence s, int st, int be, int count) {
                String currentText = myEditText.getText().toString();
                if (currentText.isEmpty() || pattern.matcher(currentText).matches())
                    return; // no need to modify
                String numbersOnly = currentText.trim().replaceAll("[^\\d.]", "");; // remove everything but numbers
                String formatted = "";
                for(int i = 0; i < numbersOnly.length(); i += 4)
                    if (i + 4 < numbersOnly.length())
                        formatted += numbersOnly.substring(i,i+4)+space;
                    else
                        formatted += numbersOnly.substring(i);
                myEditText.setText(formatted);
                myEditText.setSelection(myEditText.getText().toString().length());
            }
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    
            @Override
            public void afterTextChanged(Editable e) {}
    });
    

提交回复
热议问题