我有一个自定义键盘,不想显示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会导致弹出软键盘。
答案 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);