我的应用中有EditText
(et)。我希望能够限制字符数并验证输入。
我的输入类型是一个字符串序列,例如,n = number,a = alpha。如果我说10(最大)字符,我的输入字符串就像......
aannnnnnna
我在完成所有工作时遇到了问题。它似乎首先在我的角色计数上失败了(我评论了验证)。我的文本翻倍,我遇到了一个奇怪的问题。这是我的代码......
et.setFilters(new InputFilter[] {
new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source.equals("")) {
return source;
}
else {
String boxInput = source.toString();
String textFormat = options.getFormattedTextFormat();
int maxChars = options.getFormattedTextMaxChars();
if (maxChars > 0 && source.length() > maxChars) {
Toast.makeText(OpenForm.this, R.string.maxCharsText + " " + maxChars, Toast.LENGTH_SHORT).show();
boxInput = source.toString().substring(0,maxChars - 1);
source = boxInput;
}
if (!textFormat.isEmpty()) {
for (int i = 0; i < boxInput.length(); i++) {
char c = boxInput.charAt(i);
char test = textFormat.charAt(i);
if (test == 'n' && !Character.isDigit(c)) {
// Testing for a number, but character is not a number
Toast.makeText(OpenForm.this, R.string.badNumber + " " + i, Toast.LENGTH_SHORT).show();
} else if (test == 'a' && Character.isDigit(c)) {
// Testing for a letter but character is a number
Toast.makeText(OpenForm.this, R.string.badLetter + " " + i, Toast.LENGTH_SHORT).show();
}
//return boxInput;
}
}
return boxInput;
}
}
}
});
答案 0 :(得分:2)
在XML中,您可以添加此内容。
android:maxLength="10"
从中获取文本以验证您可以执行此操作..
String text = editText.getText().toString().trim();
if (text.equals("whatev") {
}
以编程方式限制编辑文本....
InputFilter[] filter = new InputFilter[1];
filter[0] = new InputFilter.LengthFilter(10);
editText.setFilters(filter);
你仍然可以像上面那样从中获取文本。