【问题标题】:View-specific IME?查看特定的 IME?
【发布时间】:2011-08-18 21:42:50
【问题描述】:

我有一个自定义视图,我希望用户能够从应用程序定义的字符集中输入字符。为此,据我了解,我需要编写一个输入法服务。用户不仅需要安装它,还需要在设置>语言和键盘中启用输入法,然后在视图中选择自定义输入法。

这看起来真的很疯狂。我希望此 IME 仅用于一个应用程序中的一个视图。我不希望它在系统范围内可用或强制用户进行全局设置更改。

我能看到的唯一选择是定义我自己的应用内自定义视图并在视图获得焦点时模拟 IME(可能是全屏)。没有更好的吗?

【问题讨论】:

  • 顺便说一句,我刚才发现了一个非常相似的问题:stackoverflow.com/questions/1896939/…。同样的答案。
  • 3年后答案还是一样吗?
  • @PetrPeller - 据我所知,它仍然是。从那以后,我在发行说明或开发者博客中没有看到任何其他建议。 (当然,我可能错过了,在这种情况下,如果有人提供相反的信息,我将非常感激。)

标签: android ime android-input-method soft-keyboard


【解决方案1】:

我不认为 IME 是为此类任务而设计的。他们的概念是允许用户以标准化的方式输入,以便可以在来自不同供应商的多个应用程序中使用。

我的策略会和你想的差不多:

  • 防止软键盘出现,
  • 拦截菜单按钮按键以显示您自己的,
  • 添加自定义布局(可能是GridViewTableView 内的RelativeLayout 底部重力)
  • 使用OnItemClickListener
  • 将所需的KeyEvents 发送到根View。如果字符是发明的,KeyCodes 甚至不需要与 ASCII 字符相关。你只要截取代码,随意使用即可。

很抱歉,我无法按照您的要求为您提供选项,但这种替代方法似乎并不比创建一个全新的 IME 更有效。

编辑:阅读相关问题后,使用android.inputmethodservice.KeyboardView 而不是用GridView 重新发明轮子是有意义的。

【讨论】:

  • 如果我想重现 IME 的所有行为,实际上还有很多工作要做。在我的脑海中:平移应用程序为键盘腾出空间而不遮挡目标视图;提供全屏模式;处理配置更改。
  • @Ted 我不知道你的应用在做什么,但如果它是一个非常具体的用途而不是多功能键盘,那么你可以解决一些限制(即你不需要要滚动视图以继续显示 EditText 小部件,您可以在键盘上添加一个,然后传输整个文本)。你只需要实现你的应用需要的东西。
  • 这听起来很合理。这可能是我最终会做的事情,包括像你建议的那样使用 KeyboardView。 Android 人开发了这个伟大的基础设施,然后只在全球范围内提供,这似乎很奇怪。这让我想起了过去在 Java 中是如何处理字体的:将它们安装在你的机器上,然后 Java 就可以使用它们了。最终增强了使用特定于应用程序字体的能力,而无需在系统范围内安装它。我(可悲地)将您的答案标记为解决方案,即使它只是一个很好的“不”。
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多