我一直在寻找为我的应用程序创建自定义键盘。起初,我开始查看SoftKeyboard上的SDK示例,但是阅读Android开发者小组让我看到了这篇文章:
这真的不是如何输入的 方法框架应该起作用。 IME应该是通用输入 设施,而不是特定的设施 应用。如果你需要一些 应用程序特定的输入,你应该建立 它进入你的UI而不是推动 它是一个通用的IME。
如何在UI中构建特定于应用程序的输入?我的意思是,有没有办法扩展键盘应用程序或其他东西,只在我的应用程序中使用它?
答案 0 :(得分:19)
我不确定是否有一个直接的解决方案(在某种程度上甚至可以理解原始问题背后的真正原因)。
如原始问题所述:
如果您需要某些特定于应用的输入,则应将其构建到UI中 而不是把它推到一个通用的IME。
这是什么意思 not 你应用程序中的 应该尝试通过扩展或修改手机上的软键盘来构建这样的输入功能。有所以许多不同的软键盘(基本上,软键盘只是另一个应用程序),因为大多数手机制造商创建自己的版本,人们下载第三方键盘(如Swype或SwiftKey等)。 ),我无法想象有没有办法让你“破解”那些添加几个按钮或任何你想要的东西(这也可能是一个主要的安全漏洞,另一个原因可能是它不可能) )。
以上引用建议的是,除了键盘之外,您还必须创建一些其他形式的输入。一个这样的例子,如果我可以添加一个非常好的例子,RealCalc Scientific Calculator看起来如何:
现在这不是开源的,所以我只能猜测代码是怎么样的(但也不应该太难猜测):在最简单的形式中,这只是一个有很多{{的网格3}}。每个按钮处理onClick事件,这意味着执行某种操作(更改其他按钮上的标签,显示菜单,在上面的标签中显示一些文本或其他),这可能就是它的内容。当然,手机的软键盘永远不会显示(因为您不需要带有所有这些按钮的键盘(并且没有任何输入字段可以写入任何内容)。)
这一切都归结为已经提到的引用:如果您需要某些特定于应用的输入,则应将其构建到您的UI中。或者换句话说:创建按钮(如果不需要,则不显示软键盘),并在点击它们时让事情发生。
只是提到它:如果你做想要创建自己的IME(我坚信不这里的情况),你应该看看在以下资源:
答案 1 :(得分:10)
在我看来,你应该看看有关键盘和键盘视图http://developer.android.com/reference/android/inputmethodservice/Keyboard.html和http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html的参考文献的开头。
在那里,您可以看到使用XML文件定义键盘的示例。我认为这就是你要找的东西。
答案 2 :(得分:2)
如@ sebap123所述 Keyboard和KeyboardView类是您需要使用的类,
此外,对于实施,这里是quick detailed guide。