如何禁用特定活动的Android软键盘?

我有一个EditText的活动,我只需要input数字。

现在,我已经将我的EditText的inputtypes定义为数字,并为我的用户制作了一个漂亮的小键盘,但是我还需要确保软键盘在用户点击时不会popupEditText。

我试图通过添加清单来隐藏键盘

android:windowSoftInputMode="stateAlwaysHidden" 

在我的清单中的特定活动,但这不适合我,因为只要用户点击EditText键盘再次出现。

我试过像这样编程

 activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

但是这也行不通。 键盘出现在用户点击EditText时。

唯一可行的是将EditText的InputType设置为null,如下所示:

 EditText.setInputType(InputType.TYPE_NULL); 

但我不能使用它,因为它将允许用户在设备上连接键盘来inputEditText字段中的字母和其他符号,而我希望每个人都只专门使用键盘在字段中input数据。

我还应该提到,我目前正在testing我的应用程序在Android 2.1下,但我希望我的解决scheme可以跨所有版本工作。 任何帮助,将不胜感激。 提前致谢。

Related of "如何禁用特定活动的Android软键盘?"

无论在哪个Edittext中,您都需要禁用软键盘,在该编辑文本的xml中添加属性。

 <EditText android:id=".." .. android:focusable="false" /> 

它会停止软键盘的执行。

只是认为有可能扩展EditText并通过那里处理软键盘的访问,并遇到这个问题 ,这有一个非常优雅的解决scheme,我的问题。

只要按照步骤,这完全处理softkeyboard为我。 希望能帮助其他人解决这个问题。

在清单文件的活动中使用android:windowSoftInputMode="stateHidden" 。 这将工作。 不要使用android:focusable =“false”作为EditText,除非你不愿意input文本。 如果你想给input,然后删除布局文件中的edittext属性。

如果您正在使用ViewGroup,则可以使用此方法阻止软键盘:

 view.setDescendantFocusability(view.FOCUS_BLOCK_DESCENDANTS); 

由于这个观点,它的任何一个后代都会被关注。

你可以使用这个代码:

 <EditText . . android:enabled="false" android:focusable="false" android:focusableInTouchMode="false" android:inputType="numberPassword" />