Android应用如何加载键盘?

时间:2010-10-15 00:07:24

标签: android keyboard android-2.2-froyo

我需要调出一些不同的键盘:带有Ctrl和Alt键的“标准”键盘;也许是光标垫;等等。

我找到了Keyboard类,它可以让我在XML资源中定义一个键盘。我发现KeyboardView类有一个setKeyboard方法......到目前为止,我还没有发现任何其他类需要Keyboard个实例。

我应该如何使用KeyboardView?我尝试在我的活动的XML中添加一个;使用findViewById在运行时找到它;然后调用setKeyboard ...但所有这些都搞砸了我的布局,打开特殊键盘。

3 个答案:

答案 0 :(得分:3)

事实证明这是非常可行的,我最初的问题可能更多地与一般的Android newbiness(这是我的第一个Android应用程序)而不是KeyboardView有关。特别是,我习惯于将可见性视为一个简单的二进制属性。

总之:

  1. 使用KeyboardView
  2. 在XML文件中声明android:visibility="gone"
  3. 在显示视图之前,请致电setKeyboard()以附加键盘。这很重要,因为KeyboardView从键盘中获得了它的大小。
  4. 要获取原始密钥事件,请致电KeyboardView.setOnKeyboardActionListener()。在将此功能从Dialog重构回我的主View后,我将OnKeyboardActionListener功能放在一个独立的类中,但这不是必需的。
  5. 我致电keyboardView.setEnabled(true);。这似乎不是必要,但我不确定(还)在什么情况下它会重要;只有当您拨打setEnabled(false)
  6. 时,或许
  7. 我致电keyboardView.setPreviewEnabled(true); - 如果用户无法从键盘正上方的输入biox获得视觉反馈,这将非常有用。
  8. 然后,在键盘全部设定的情况下,拨打keyboardView.setVisibility(VISIBLE);
  9. 要在适当时隐藏键盘,只需拨打keyboardView.setVisibility(GONE);即可。要更改键盘(如在shift键或循环键盘键盘上,只需再次调用setKeyboard。我使用Map<<Integer, Keyboard>来实现延迟创建模式; a如果程序运行很长时间并且键盘使用不多,则可能需要弱引用。

答案 1 :(得分:0)

KeyboardKeyboardView用于制作替代输入法引擎(IME)。然后,这些可以由用户选择,就像他们可以从Android Market安装Swype,Graffiti和其他内容一样。

作为开发人员,您可以创建这样的IME,但不能强迫用户使用。

答案 2 :(得分:0)

在editText视图中使用inputType属性将有助于在不同的系统键盘(电话,电子邮件等)之间进行选择。此外,SDK附带的APIDemos应用程序还有一个如何实现强制自定义键盘的示例仅适用于您的应用。