0

我有自定义键盘,不想显示Android软键盘。隐藏安卓软键盘,只允许EditText上的数字

editText.setInputType(InputType.TYPE_NULL); 

然而应的EditText只允许位数:这可以通过下面的代码(How to hide Android soft keyboard on EditText)来实现。这可以通过以下方式实现:

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

+0

此代码可能会帮助你'input.setRawInputType(Configuration.KEYBOARD_12KEY);' – 2015-03-03 13:05:46

+0

我试过了,但它仍然显示手机上的android softkeyboard。 – Wirling 2015-03-04 07:55:45

回答

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

而不是

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);