web-dev-qa-db-ja.com

Android上のアプリケーションに組み込まれたカスタム「キーボード」

アプリケーション用にカスタムキーボードを作成することを検討してきました。最初は、SDKの例としてSoftKeyboardを調べ始めましたが、Android Developer Groupを読んで、次の投稿に進みました。

これは、実際にはインプットメソッドフレームワークが機能するはずの方法ではありません。 IMEは、特定のアプリケーションではなく、汎用の入力機能である必要があります。アプリ固有の入力が必要な場合は、一般的なIMEにプッシュするのではなく、UIに組み込む必要があります。

UI内でアプリ固有の入力を作成するにはどうすればよいですか?つまり、Keyboardアプリまたは何かを拡張して、自分のアプリケーションでのみ使用する方法はありますか?

キーボードに必要な機能:

  • Shiftキーで他のいくつかのキーを表示
  • 平方根やPIなどの特別なキー
  • 等.

PS:醜い解決策は、例えばImageButtonのテーブルを作成することかもしれませんが、私はきれいなものを作りたかったです。

33
OlivierM

これに対する直接的な解決策があるかどうかは本当にわかりません(その範囲で、元の質問の背後にある実際の理由を理解することさえ可能です)。

元の質問で引用されているように:

アプリ固有の入力が必要な場合は、一般的なIMEにプッシュするのではなく、UIに組み込む必要があります。

つまり、notアプリ内で拡張または変更電話のソフトキーボードを使用して、このような入力機能を組み込む必要があります。 soには多くの異なるソフトキーボードがあります(基本的に、ソフトキーボードは別のアプリです)。ほとんどの電話メーカーが独自のバージョンを作成し、サードパーティのキーボード(SwypeやSwiftKeyなど)をダウンロードするためです。 )、そしてあなたがそれらに「ハック」していくつかのボタンまたはあなたが望むものを追加する方法があるとは想像できません(これは大きなセキュリティホールになる可能性もあり、おそらくそれが不可能であるもう一つの理由です) )。

代わりに上記の引用が示唆していることは、いくつかのother入力形式besidesキーボードを作成する必要があるということです。そのような例の1つであり、私が追加するとすれば非常に良い例は、 RealCalc Scientific Calculator の外観です。

RealCalc Scientific Calculator

これはオープンソースではないので、コードがどのように見えるかを推測することしかできません(しかし、推測するのも難しいことではありません):最も単純な形式では、これは buttons 。各ボタンはonClickイベントを処理します。これは、ある種のアクション(他のボタンのラベルの変更、メニューの表示、上部のラベルのテキストの表示など)を実行することを意味します。そしてもちろん、電話のソフトキーボードは決して表示されません(これらのボタンをすべて備えたキーボードは必要ありません(さらに、何かを入力するための入力フィールドもありません)。).

それはすべて、すでに述べた引用に要約されます:アプリ固有の入力が必要な場合は、UIに組み込む必要があります。または言い換えると、ボタンを作成し(必要のない場合はソフトキーボードを表示しない)、ボタンをクリックしたときに何かが発生するようにします。


そして、それを言及しただけです:do独自のIMEを作成したい場合(私はこれがnotケースだと強く信じています)、以下を確認する必要がありますリソース:

19
Julian

私の控えめな意見では、キーボードとキーボードビューについてのリファレンスの最初に目を通す必要があります http://developer.Android.com/reference/Android/inputmethodservice/Keyboard.html および http://developer.Android.com/reference/Android/inputmethodservice/KeyboardView.html

XMLファイルを使用してキーボードを定義する例を見ることができます。これがあなたが探しているものだと思います。

10
sebap123

@ sebap123 KeyboardKeyboardView クラスで言及されているように、使用する必要があります、

さらに、実装のために、ここに クイック詳細ガイド を示します。

2
asadnwfp