我有一个自定义视图,我希望用户能够从应用程序定义的字符集中输入字符。为此,据我了解,我需要编写一个输入法服务。用户不仅需要安装它,还需要在“设置”>“语言和键盘”中启用 IME,然后在视图中选择要使用的自定义 IME。
这似乎真的很疯狂。我希望此 IME 仅用于一个应用程序中的一个视图。我不希望它在系统范围内可用或强制用户进行全局设置更改。
我能看到的唯一选择是定义我自己的应用内自定义视图并在视图获得焦点时模拟 IME(可能是全屏)。没有更好的吗?
我有一个自定义视图,我希望用户能够从应用程序定义的字符集中输入字符。为此,据我了解,我需要编写一个输入法服务。用户不仅需要安装它,还需要在“设置”>“语言和键盘”中启用 IME,然后在视图中选择要使用的自定义 IME。
这似乎真的很疯狂。我希望此 IME 仅用于一个应用程序中的一个视图。我不希望它在系统范围内可用或强制用户进行全局设置更改。
我能看到的唯一选择是定义我自己的应用内自定义视图并在视图获得焦点时模拟 IME(可能是全屏)。没有更好的吗?
我不认为 IME 是为这种任务而设计的。他们的概念是允许用户以标准化的方式输入,以便可以在来自不同供应商的多个应用程序中使用。
我的策略将类似于您的想法:
GridView
或TableView
内部 a )RelativeLayout
OnItemClickListener
KeyEvent
的 s 发送到 root View
。如果字符是发明的,KeyCodes
甚至不需要涉及到 ASCII 字符。您只需截取代码并随意使用。抱歉,我无法按照您的要求为您提供选项,但这种替代方法似乎并不比创建一个全新的 IME 更有效。
编辑android.inputmethodservice.KeyboardView
:阅读相关问题后,使用而不是重新发明轮子是有意义的GridView
。