android format edittext to display spaces after every 4 characters

前端 未结 12 1694
傲寒
傲寒 2020-12-10 13:27

Android - I want to get a number input from the user into an EditText - it needs to be separated by spaces - every 4 characters. Example: 123456781234 -> 1234 5678 1234

12条回答
  •  庸人自扰
    2020-12-10 13:49

    is this editext for credit card?
    first create count variable

    int count = 0;
    

    then put this in your oncreate(activity) / onviewcreated(fragment)

    ccEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start,
                                      int count, int after) { /*Empty*/}
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                                  int count) { /*Empty*/ }
    
        @Override
        public void afterTextChanged(Editable s) {
    
            int inputlength = ccEditText.getText().toString().length();
    
            if (count <= inputlength && inputlength == 4 ||
                    inputlength == 9 || inputlength == 14)){
    
                ccEditText.setText(ccEditText.getText().toString() + " ");
    
                int pos = ccEditText.getText().length();
                ccEditText.setSelection(pos);
    
            } else if (count >= inputlength && (inputlength == 4 ||
                    inputlength == 9 || inputlength == 14)) {
                ccEditText.setText(ccEditText.getText().toString()
                        .substring(0, ccEditText.getText()
                                .toString().length() - 1));
    
                int pos = ccEditText.getText().length();
                ccEditText.setSelection(pos);
            }
            count = ccEditText.getText().toString().length();
        }
    });
    

提交回复
热议问题