如何禁用特定活动的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可以跨所有版本工作。 任何帮助,将不胜感激。 提前致谢。

  • 识别正则expression式模式的types
  • 触摸edittext时如何使提示消失?
  • 在android编辑文本中设置光标位置
  • EditText在ScrollView里面不可滚动
  • android如何将EditText Cursor设置为其文本的末尾
  • Android:从软键盘中删除Enter Key
  • 如何在EditText中将光标定位在右侧
  • singleLine属性的替代(不赞成)TextInputEditText
  • 无论在哪个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" />