首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setSoftInputMode对InputMethodManager

setSoftInputMode对InputMethodManager
EN

Software Engineering用户
提问于 2013-05-10 19:32:03
回答 2查看 9.8K关注 0票数 4

我看到并使用了这两种方法来隐藏屏幕上的键盘,同时编写Android:

代码语言:javascript
复制
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

以及:

代码语言:javascript
复制
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

我已经阅读了这两份文件,我仍然不清楚每一份文件的不同之处、相同之处、哪一种方法或做法更好,以及在何种情况下应使用哪种方法或做法。

以下是.setSoftInputMode 文档的摘录:

按照WindowManager.LayoutParams.softInputMode指定窗口要使用的显式软输入模式。在这里提供除“未指定”之外的任何内容都将覆盖窗口通常从其主题中检索的输入模式。

下面是InputMethodManager 文档的一段摘录,它似乎表达了几乎相同的观点:

您还可以使用相同的windowSoftInputMode属性控制窗口的首选软输入状态(打开、关闭等)。通过这里的API可以获得更细粒度的控制,直接与IMF及其IME交互--或者显示或隐藏输入区域,让用户选择一个输入方法等等。

那么,这两种隐藏Android软键盘的选项有什么不同,其中一种比另一种更有好处?更有效率吗?每种方法的具体用途是什么?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2013-05-14 17:12:54

我认为在InputMethodManager文档中非常清楚,它说:

  • 这个类所表示的输入方法管理器是管理所有其他部分之间交互的系统的中心点。它表示为客户机端API,它存在于每个应用程序上下文中,并与管理跨所有进程的交互的全局系统服务进行通信。
  • 输入方法(IME)实现允许用户生成文本的特定交互模型。系统绑定到正在使用的当前输入方法,从而创建并运行该方法,并告诉它何时隐藏并显示其UI。一次只运行一个IME。

我的意思是,InputMethodManager比setSoftInputMode“更大”,有更多的响应能力。第一个是

中央系统API的整体输入法框架(IMF)体系结构,它仲裁应用程序与当前输入法之间的交互。

另一方面,第二种方法只是一种设置方法。

票数 8
EN

Software Engineering用户

发布于 2015-12-21 21:54:00

当您的活动集中时,setSoftInputMode指示框架是应该显示还是隐藏软输入窗口。该框架通过调用InputMethodManager的方法来实现此行为。正如您所引用的文档中所提到的,您可以通过禁用自动行为(SOFT_INPUT_STATE_UNCHANGED)并使用InputMethodManager实现所需的精确行为来执行更细粒度的控制。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/197697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档