自定义'键盘'内置在Android上的应用程序中

Oli*_*erM 33 keyboard android input

我一直在寻找为我的应用程序创建自定义键盘.起初,我开始查看SoftKeyboard的SDK示例,但阅读Android开发者小组让我看到了这篇文章:

这实际上不是输入方法框架应该如何工作的.IME应该是一个通用的输入工具,而不是特定的应用程序.如果您需要某些特定于应用程序的输入,则应将其构建到UI中,而不是将其推送到通用IME.

如何在UI中构建特定于应用程序的输入?我的意思是,有没有办法扩展键盘应用程序或其他东西,只在我的应用程序中使用它?

键盘所需的功能:

  • Shift键显示其他一些键
  • 特殊键,如平方根或PI
  • 等等

PS:一个丑陋的解决方案可能是制作一个ImageButton表,但我想做一些干净的东西.

Jul*_*ian 19

我不确定是否有一个直接的解决方案(在某种程度上甚至可以理解原始问题背后的真正原因).

正如原始问题所引述:

如果您需要某些特定于应用程序的输入,则应将其构建到UI中,而不是将其推送到通用IME.

这意味着,并不是说你的应用程序应该尝试通过扩展或修改手机上的软键盘来构建这样的输入功能.有这么多不同的软键盘(基本上,软键盘只是另一个应用程序),因为大多数手机制造商创建自己的版本,人们下载第三方键盘(如Swype或SwiftKey等),我不能图片有一种方法让你"破解"那些添加一些按钮或任何你想要的东西(这也可能是一个主要的安全漏洞,这可能是不可能的另一个原因).

相反,上面引用的建议是,你必须创建键盘之外其他形式的输入.一个这样的例子,如果我可以添加一个非常好的例子,是RealCalc Scientific Calculator的外观:

RealCalc科学计算器

现在这不是开源的,所以我只能猜测代码是怎么样的(但它也不应该太难猜测):在最简单的形式中,这只是一个有很多按钮的网格.每个按钮处理onClick事件,这意味着执行某种操作(更改其他按钮上的标签,显示菜单,在上面的标签中显示一些文本或其他),这可能就是它的内容.当然,手机的软键盘永远不会显示(因为您不需要带有所有这些按钮的键盘(并且也没有任何输入字段可以写入任何内容)).

这一切都归结为已经提到的引用:如果你需要一些特定于应用程序的输入,你应该将它构建到你的UI中.或者换句话说:创建按钮(如果不需要,则不显示软键盘),并在单击它们时进行操作.


而刚刚已经提到:如果你希望创建自己的IME(我坚信是不是这里的情况),你应该看看以下资源:


seb*_*123 10

在我的拙见中,你应该看看关于键盘和键盘视图的参考开始http://developer.android.com/reference/android/inputmethodservice/Keyboard.htmlhttp://developer.android.com/reference /android/inputmethodservice/KeyboardView.html.

在那里,您可以看到使用XML文件定义键盘的示例.我认为这就是你要找的东西.

  • `KeyboardView`就是答案,问题是如何整合它.因为如果你创建一个IME,它是公共的,用户必须选择它.如果你不创建,只需将视图放入布局,然后它[真的很hacky](http://www.fampennings.nl/maarten/android/09keyboard/index.htm),查看所需的所有不同的听众.可能缺乏知识,或者不可能的集成设计...... (5认同)