Format credit card in edit text in android

后端 未结 29 2040
耶瑟儿~
耶瑟儿~ 2020-11-30 19:18

How to make EditText accept input in format:

4digit 4digit 4digit 4digit 

I tried Custom format edit text input android to acc

29条回答
  •  情歌与酒
    2020-11-30 19:43

    int          keyDel;
    String       a;
    String       a0;
    int          isAppent = 0;
    final String ch       = " ";
    
    private void initListner() {
    
    
        txtCreditNumber.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                boolean flag = true;
                if (s.length() > 19) {
                    txtCreditNumber.setText(a0);
                    txtCreditNumber.setSelection(txtCreditNumber.getText().length());
                    return;
                }
                String eachBlock[] = s.toString().split(ch);
                for(int i = 0; i < eachBlock.length; i++) {
                    if (eachBlock[i].length() > 4) {
                        flag = false;
                    }
                }
                if (a0.length() > s.toString().length()) {
                    keyDel = 1;
                }
                if (flag) {
                    if (keyDel == 0) {
    
                        if (((txtCreditNumber.getText().length() + 1) % 5) == 0) {
    
                            if (s.toString().split(ch).length <= 3) {
                                isAppent = 1;
                                txtCreditNumber.setText(s + ch);
                                isAppent = 0;
                                txtCreditNumber.setSelection(txtCreditNumber.getText().length());
                                a = txtCreditNumber.getText().toString();
                                return;
                            }
                        }
                        if (isAppent == 0) {
                            String str = s.toString();
                            if (str.lastIndexOf(ch) == str.length() - 1) {
                                str = str.substring(0, str.lastIndexOf(ch));
                                keyDel = 1;
                                txtCreditNumber.setText(str);
                                keyDel = 0;
                                txtCreditNumber.setSelection(txtCreditNumber.getText().length());
                                a = txtCreditNumber.getText().toString();
                                return;
                            }
                        }
    
                    }
                    else {
                        String str = s.toString();
                        if (str.length() > 0 && str.lastIndexOf(ch) == str.length() - 1) {
                            str = str.substring(0, str.lastIndexOf(ch));
                            keyDel = 1;
                            txtCreditNumber.setText(str);
                            keyDel = 0;
                            txtCreditNumber.setSelection(txtCreditNumber.getText().length());
                            a = txtCreditNumber.getText().toString();
                            return;
                        }
                        else {
                            a = txtCreditNumber.getText().toString();
                            keyDel = 0;
                        }
                    }
    
                }
                else {
                    String str = s.toString();
                    str = str.substring(0, str.length() - 1) + ch + str.substring(str.length() - 1, str.length());
    
                    a = str;
                    txtCreditNumber.setText(a);
                    txtCreditNumber.setSelection(txtCreditNumber.getText().length());
                }
    
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // TODO Auto-generated method stub
                a0 = s.toString();
            }
    
            @Override
            public void afterTextChanged(Editable s) {
            }
        });
    }
    

提交回复
热议问题