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