要在Android键盘上停用.
,?
,1
,2
等。
我在想if
输入密钥,运行一个方法,例如将其从"."
转换为""
。
或者直接向上禁用它们。
我该怎么做?
答案 0 :(得分:2)
您无法像这样禁用软键盘上的键...最接近该功能的是为inputType
指定EditText
但显然只适用于number
之类的内容{1}},并且您无法为您提到的特定自定义键集执行此操作。
而是查看InputFilter
,如下所述:
How do I use InputFilter to limit characters in an EditText in Android?
特别是第二个答案(修改后的if语句符合您的要求):
new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if (source instanceof SpannableStringBuilder) {
SpannableStringBuilder sourceAsSpannableBuilder = (SpannableStringBuilder)source;
for (int i = end - 1; i >= start; i--) {
char currentChar = source.charAt(i);
if (currChar=='.' || currChar=='?' || Character.isDigit(currChar) && !Character.isSpaceChar(currentChar)) {
sourceAsSpannableBuilder.delete(i, i+1);
}
}
return source;
} else {
StringBuilder filteredStringBuilder = new StringBuilder();
for (int i = start; i < end; i++) {
char currentChar = source.charAt(i);
if (currChar=='.' || currChar=='?' || Character.isDigit(currChar) && !Character.isSpaceChar(currentChar)) {
filteredStringBuilder.append(currentChar);
}
}
return filteredStringBuilder.toString();
}
}
}