[英]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.