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

时间:2010-07-07 15:53:02

标签: android input keyboard

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

  

这真的不是如何输入的   方法框架应该起作用。   IME应该是通用输入   设施,而不是特定的设施   应用。如果你需要一些   应用程序特定的输入,你应该建立   它进入你的UI而不是推动   它是一个通用的IME。

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

键盘所需的功能:

  • 按Shift键显示其他一些键
  • 特殊键,如平方根或PI
PS:一个丑陋的解决方案可能是制作一个ImageButton表,但我想做一些干净的东西。

3 个答案:

答案 0 :(得分:19)

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

如原始问题所述:

  

如果您需要某些特定于应用的输入,则应将其构建到UI中   而不是把它推到一个通用的IME。

这是什么意思 not 你应用​​程序中的 应该尝试通过扩展或修改手机上的软键盘来构建这样的输入功能。有所以许多不同的软键盘(基本上,软键盘只是另一个应用程序),因为大多数手机制造商创建自己的版本,人们下载第三方键盘(如Swype或SwiftKey等)。 ),我无法想象有没有办法让你“破解”那些添加几个按钮或任何你想要的东西(这也可能是一个主要的安全漏洞,另一个原因可能是它不可能) )。

以上引用建议的是,除了键盘之外,您还必须创建一些其他形式的输入。一个这样的例子,如果我可以添加一个非常好的例子,RealCalc Scientific Calculator看起来如何:

RealCalc Scientific Calculator

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

这一切都归结为已经提到的引用:如果您需要某些特定于应用的输入,则应将其构建到您的UI中。或者换句话说:创建按钮(如果不需要,则不显示软键盘),并在点击它们时让事情发生。


只是提到它:如果你想要创建自己的IME(我坚信这里的情况),你应该看看在以下资源:

答案 1 :(得分:10)

在我看来,你应该看看有关键盘和键盘视图http://developer.android.com/reference/android/inputmethodservice/Keyboard.htmlhttp://developer.android.com/reference/android/inputmethodservice/KeyboardView.html的参考文献的开头。

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

答案 2 :(得分:2)

如@ sebap123所述 KeyboardKeyboardView类是您需要使用的类,

此外,对于实施,这里是quick detailed guide