在Android应用程序中内置的自定义“键盘”

我一直在寻找为我的应用程序创build一个自定义键盘。 起初,我开始看SDK的例子的SoftKeyboard,但阅读Android开发人员组让我到这个职位:

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

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

键盘所需的function:

  • Shift键显示一些其他键
  • 像平方根或PI这样的特殊键
  • 等等

PS:一个丑陋的解决scheme可能是制作一个ImageButton的表格,但是我想把一些东西弄干净。

Solutions Collecting From Web of "在Android应用程序中内置的自定义“键盘”"

我不确定是否有一个直接的解决scheme(就这个程度而言,甚至可以理解原始问题背后的真正原因)。

正如原来的问题所引用的那样:

如果您需要一些特定于应用程序的input,则应将其构build到您的UI中,而不是将其推送到通用IME。

这是什么意思, 并不是说你在你的应用程序中应该尝试通过扩展或修改手机上的软键盘来构build这样的inputfunction。 有许多不同的软键盘(基本上,软键盘只是另一个应用程序),因为大多数手机制造商创build自己的版本,并且人们下载第三方键盘(如Swype或SwiftKey等),我不能图片有一种方法可以让你“添加”几个button或者任何你想要的东西(这也可能是一个重大的安全漏洞,也可能是不可能的另一个原因)。

上面的引用暗示的是, 除了键盘之外 ,还必须创build其他forms的input。 一个这样的例子,如果我可以补充一个很好的例子,就是RealCalc科学计算器的外观:

RealCalc科学计算器

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

这一切归结到已经提到的报价: 如果您需要一些特定于应用程序的input,您应该将其构build到您的用户界面 。 或者换句话说:创buildbutton(如果不需要,不要显示软键盘),点击它们就会发生。


只是提到它:如果你想创build自己的IME(我坚信这不是这种情况),你应该看看下面的资源:

  • 屏幕input法
  • 创build一个input法
  • 软键盘示例

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

在那里你可以看到一个使用XML文件定义键盘的例子。 我认为这是你正在寻找的。

正如@ sebap123所提到的, Keyboard和KeyboardView类是你需要使用的,

此外,对于实施,这里是一个快速详细的指南 。