簡體   English   中英

如何打印帶有字母“ X”的ATM卡號

[英]How I can print ATM card number with letter “X”

如何在編輯文本中輸入16個字母的ATM數字時打印前14個字母“ X”而不是數字

您將必須使用onEditorActionListener並偵聽onTextChanged方法中的每個輸入,以屏蔽用戶輸入到'X'的所需字符數。

在您的xml中用於EditText

    android:inputType="number"
    android:digits=" 1234567890"
    android:maxLength="16"

creditCard是您嗎EditText

creditCard.setTransformationMethod(new MyPasswordTransformationMethod());
     creditCard.addTextChangedListener(new TextWatcher() {

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

            boolean flag = true;
            String eachBlock[] = creditCard.getText().toString().split("-");
            for (int i = 0; i < eachBlock.length; i++) {
                if (eachBlock[i].length() > 4) {
                    flag = false;
                }
            }
            if (flag) {

                creditCard.setOnKeyListener(new View.OnKeyListener() {

                    @Override
                    public boolean onKey(View v, int keyCode, KeyEvent event) {

                        if (keyCode == KeyEvent.KEYCODE_DEL)
                            keyDel = 1;
                        return false;
                    }
                });

                if (keyDel == 0) {

                    if (((creditCard.getText().length() + 1) % 5) == 0) {

                        if (creditCard.getText().toString().split("-").length <= 3) {
                            creditCard.setText(creditCard.getText() + "-");
                            creditCard.setSelection(creditCard.getText().length());
                        }
                    }
                    a = creditCard.getText().toString();
                } else {
                    a = creditCard.getText().toString();
                    keyDel = 0;
                }

            } else {
                creditCard.setText(a);
            }

        }

        @Override
        public void afterTextChanged(Editable s) {

        }

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

        }

    });

}


public static class MyPasswordTransformationMethod extends PasswordTransformationMethod {
    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        return new PasswordCharSequence(source);
    }

    private class PasswordCharSequence implements CharSequence {
        private CharSequence mSource;
        public PasswordCharSequence(CharSequence source) {
            mSource = source;
        }
        public char charAt(int index) {
         char caracter;
           switch (index)
            {
                case 4:
                    caracter = ' ';
                    break;
                case 9:
                    caracter = ' ';
                    break;
                case 14:
                    caracter = ' ';
                    break;
                default:
                    if(index < 15)
                        return '*';
                    else
                        caracter = mSource.charAt(index);
                    break;



            }


            return caracter;
        }
        public int length() {
            return mSource.length();
        }
        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end); 
        }
    }
};}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM