我看到并使用了这两种方法来隐藏屏幕上的键盘,同时编写Android:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);以及:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);我已经阅读了这两份文件,我仍然不清楚每一份文件的不同之处、相同之处、哪一种方法或做法更好,以及在何种情况下应使用哪种方法或做法。
以下是.setSoftInputMode 文档的摘录:
按照WindowManager.LayoutParams.softInputMode指定窗口要使用的显式软输入模式。在这里提供除“未指定”之外的任何内容都将覆盖窗口通常从其主题中检索的输入模式。
下面是InputMethodManager 文档的一段摘录,它似乎表达了几乎相同的观点:
您还可以使用相同的windowSoftInputMode属性控制窗口的首选软输入状态(打开、关闭等)。通过这里的API可以获得更细粒度的控制,直接与IMF及其IME交互--或者显示或隐藏输入区域,让用户选择一个输入方法等等。
那么,这两种隐藏Android软键盘的选项有什么不同,其中一种比另一种更有好处?更有效率吗?每种方法的具体用途是什么?
发布于 2013-05-14 17:12:54
我认为在InputMethodManager文档中非常清楚,它说:
我的意思是,InputMethodManager比setSoftInputMode“更大”,有更多的响应能力。第一个是
中央系统API的整体输入法框架(IMF)体系结构,它仲裁应用程序与当前输入法之间的交互。
另一方面,第二种方法只是一种设置方法。
发布于 2015-12-21 21:54:00
当您的活动集中时,setSoftInputMode指示框架是应该显示还是隐藏软输入窗口。该框架通过调用InputMethodManager的方法来实现此行为。正如您所引用的文档中所提到的,您可以通过禁用自动行为(SOFT_INPUT_STATE_UNCHANGED)并使用InputMethodManager实现所需的精确行为来执行更细粒度的控制。
https://softwareengineering.stackexchange.com/questions/197697
复制相似问题