在我的Android应用中,第一次运行应用时,用户必须输入许可证。许可证的格式为###-XXX-###-###
,其中#
是一个数字,X
是一个字符。我把格式作为提示,但这还不够。我怎么能这样做,用户不输入 - ,它只出现在3个字符后?
更新:
这是我的代码并且有效:
licenseEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
System.out.println("afterTextChanged");
if (s.length() == 3) {
s.append("-");
}
if (s.length() == 7) {
s.append("-");
}
if (s.length() == 11) {
s.append("-");
}
if (s.length() == 15)
ok.performClick();
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
System.out.println("beforeTextChanged");
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
System.out.println("onTextChanges");
}
});
答案 0 :(得分:3)
在其中设置TextWatcher
,将内联文本与regularExpression
进行比较。并将其他代码放在前3个charachets后面附加“ - ”到intered characterSet。
答案 1 :(得分:1)
您可以使用4个EditTexts并将文字填充到它们 - 类似Windows的许可证输入
答案 2 :(得分:0)
尝试使用%运算符
if( s.length() == 15) {
// s.length() = 15
} else if( s.length() % 4 == 3) {
// s.length = {3, 7, 11, 19, ....}
// so s.length != 15
}
通过这种方式,您可以减少代码重复。有关详细信息,请查看:Wikipedia - Modulo operation