如何禁用Android键盘上的键删除

时间:2014-07-13 19:09:20

标签: java android android-softkeyboard

要在Android键盘上停用.?12等。

我在想if输入密钥,运行一个方法,例如将其从"."转换为""

或者直接向上禁用它们。

我该怎么做?

1 个答案:

答案 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();
    }
}
}