我一直在寻找为我的应用程序创建自定义键盘。起初,我开始查看 SoftKeyboard 的 SDK 示例,但阅读 Android 开发人员组后我看到了这篇文章:
这确实不是怎么输入的
方法框架应该可以工作。
IME 应该是通用输入
设施,不针对特定
应用。如果你需要一些
应用程序特定的输入,您应该构建
它进入你的用户界面而不是推送
它输出到通用输入法。
如何在 UI 中构建特定于应用程序的输入?我的意思是,有没有办法扩展键盘应用程序或其他东西并仅在我的应用程序中使用它?
键盘所需的功能:
- Shift 键显示其他一些键
- 特殊键,如平方根或 PI
- 等。
PS:一个丑陋的解决方案可能是制作一个 ImageButton 表格,但我想制作一些干净的东西。
I've been looking to create a custom keyboard for my application. At first, I started to look at the SoftKeyboard for the SDK examples, but reading the Android Developer Group led me to this post:
This is really not how the input
method framework is supposed to work.
An IME should be a generic input
facility, not for a particular
application. If you need some
app-specific input, you should build
it into your UI rather than pushing
it out to a generic IME.
How do I build an app-specific input within the UI? I mean, is there a way to extend the Keyboard app or something and use it only in my application?
Features needed for the keyboard:
- Shift key to display some other keys
- Special keys like square root or PI
- etc.
PS: an ugly solution could be to make a table of ImageButton for example, but I wanted to make something clean.
发布评论
评论(3)
我不太确定是否有一个直接的解决方案(在某种程度上,甚至有可能理解原始问题背后的真正原因)。
正如原始问题中引用的那样:
这意味着您在应用程序中不应该尝试通过扩展或修改手机上的软键盘来构建此类输入功能。有很多不同的软键盘(基本上,软键盘只是另一个应用程序),因为大多数手机制造商都会创建自己的版本,并且人们会下载第 3 方键盘(例如 Swype 或 SwiftKey 等)。 ),我无法想象有一种方法可以让你“破解”那些添加一些按钮或任何你想要的东西(这也可能是一个主要的安全漏洞,这可能是不可能的另一个原因)。
相反,上面的引用表明,除了键盘之外,您还必须创建一些其他形式的输入。一个这样的例子,如果我可以补充的话,也是一个非常好的例子,就是 RealCalc 科学计算器< /a> 看起来:
现在这不是开源的,所以我只能猜测代码的样子(但猜测也不应该太难):在最简单的形式中,这只是一个带有大量 按钮。每个按钮都会处理 onClick 事件,这意味着执行某种操作(更改其他一些按钮上的标签、显示菜单、在上部标签中显示一些文本或其他内容),这可能就是它的全部内容。当然,手机的软键盘永远不会显示(因为您不需要带有所有这些按钮的键盘(而且也没有任何输入字段可以在其中写入任何内容))。
这一切都可以归结为已经提到的引用:如果您需要一些特定于应用程序的输入,则应该将其构建到您的 UI 中。或者换句话说:创建按钮(如果不需要,则不显示软键盘)并在单击它们时使事情发生。
顺便提一下:如果您确实想创建自己的输入法(我坚信这里的情况不是),您应该看看以下内容资源:
I'm not really sure if there's a straight-forward solution to this (to that extent that it is even possible to understand the real reason behind the original question).
As is quoted in the original question:
What is meant by that, is not that you within your app should try to build in such input features by extending or modifying the soft keyboard on the phone. There are so many different soft keyboards (and basically, the soft keyboard is just another app), since most phone manufacturers create their own version, and people download 3rd party keyboards (such as Swype or SwiftKey etc.), and I can't picture there being a way for you to "hack" into those to add a few buttons or whatever it is you want (which could also be a major security hole, another reason why it probably isn't possible).
What instead the above quote suggests, is that you have to create some other form of input besides the keyboard. One such example, and a very good one if I might add, is how the RealCalc Scientific Calculator looks:
Now this isn't open source, so I can only guess how the code looks like (but it shouldn't be too hard a guess either): in its simplest form, this is just a grid with lots of buttons. Each button handles the onClick event, which would mean performing some kind of action (changing the label on some other buttons, showing a menu, displaying some text in the upper label or whatever), and that's probably pretty much what's to it. And of course, the phone's soft keyboard is never displayed (since you don't need a keyboard with all those buttons (and also there aren't any input fields to write anything in)).
It all boils down to the already mentioned quote: If you need some app-specific input, you should build it into your UI. Or in other words: create buttons (and don't display the soft keyboard if you don't need it) and make things happen when you click them.
And just to have mentioned it: if you do want to create your own IME (which I strongly believe is not the case here), you should have a look at the following resources:
以我的拙见,您应该看一下有关键盘和键盘视图的参考的开头 http://developer.android.com/reference/android/inputmethodservice/Keyboard.html 和 http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html。
在那里您可以看到使用 XML 文件定义键盘的示例。我认为这就是您正在寻找的。
In my humble opinion you should take a look at the beginning of reference about keyboard and keyboard view http://developer.android.com/reference/android/inputmethodservice/Keyboard.html and http://developer.android.com/reference/android/inputmethodservice/KeyboardView.html.
There you can see an example of defining keyboard using XML file. I think that this is what you are looking for.
正如@sebap123提到的
键盘 和 KeyboardView 类是您需要使用的类,
此外,为了实现,这里有一个 快速详细指南。
As mentioned by @sebap123
Keyboard and KeyboardView class are the one you need to use,
Further, for Implementation, here is a quick detailed guide.