android EditText软键盘隐藏总结

参考资料

  1. EditText是否自动弹出输入法虚拟键盘(软键盘)的问题
  2. android软键盘隐藏总结

在开发过程中,我们经常会碰到Activity中包含EditText控件时会自动弹出虚拟键盘的情形,其实这是由于EditText自动获得焦点的缘故,只要让EditText失去焦点就行了,解决办法如下:

1.在Manifest.xml文件中相应的Activity下添加如下代码即可:
    android:windowSoftInputMode="stateHidden"  

android:windowSoftInputMode 属性详解

  1. stateUnspecified: 默认设置:软键盘的状态(隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置
  2. stateUnchanged: 软键盘被保持上次的状态。
  3. stateHidden: 当用户选择该Activity时,软键盘被隐藏。
  4. stateAlwaysHidden: 软键盘总是被隐藏的。
  5. stateVisible: 软键盘是可见的。
  6. stateAlwaysVisible:当用户选择这个Activity时,软键盘是可见的。之后Activity获取焦点,软键盘也会自动弹出,强制hide不了,这是值得我们关注的。
  7. adjustUnspecified: 它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间, 或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。 如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。也就是说, 系统自动决定是采用平移模式还是压缩模式,决定因素在于内容是否可以滚动。
  8. adjustResize: 压缩模式) 当软键盘弹出时,要对主窗口调整屏幕的大小以便留出软键盘的空间。
  9. adjustPan:(平移模式:当输入框不会被遮挡时,该模式没有对布局进行调整,然而当输入框将要被遮挡时, 窗口就会进行平移。也就是说,该模式始终是保持输入框为可见
2.让EditText失去焦点,用EditText的clearFocus即可:
EditText edit = (EditText)findViewById(R.id.edit);  
edit.clearFocus();  
3.强制隐藏Android输入法窗口
EditText edit = (EditText)findViewById(R.id.edit);  
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);  
imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);  
4.EditText始终不弹出虚拟键盘
EditText edit = (EditText)findViewById(R.id.edit);  
edit.setInputType(InputType.TYPE_NULL);  

你可能感兴趣的:(android EditText软键盘隐藏总结)