隐藏Android软键盘,仅允许EditText上的数字

时间:2015-03-03 13:01:14

标签: android-edittext android-softkeyboard custom-keyboard android-inputtype imeoptions

我有一个自定义键盘,不想显示Android软键盘。这可以通过以下代码(How to hide Android soft keyboard on EditText)实现:

editText.setInputType(InputType.TYPE_NULL);

然而,EditText应该只允许数字。这可以通过以下方式实现:

editText.setInputType(InputType.TYPE_CLASS_NUMBER);

我似乎无法找到结合两种功能的方法。将inputtype设置为TYPE_NULL将允许使用硬件键盘时的非数字字符,并将inputtype设置为TYPE_CLASS_NUMBER会导致弹出软键盘。

2 个答案:

答案 0 :(得分:2)

airowe的回答引导我朝着正确的方向前进。这个解决方案似乎不适用于Android 2.3.X设备(软键盘仍会弹出)。所以我稍微调整了一下。 我最终使用了以下代码:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); //hide keyboard

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
   editText.setInputType(InputType.TYPE_CLASS_NUMBER);
}
else
{
   editText.setRawInputType(InputType.TYPE_NULL);
}

这可能允许预蜂窝片输入文字。但我认为这可以忽略不计。

答案 1 :(得分:1)

而不是

editText.setInputType(InputType.TYPE_NULL);

使用

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(fieldController.getFieldComponent().getWindowToken(), 0); //hide keyboard

隐藏键盘。

然后,您可以将输入类型设置为您想要的。

editText.setInputType(InputType.TYPE_CLASS_NUMBER);