Android SoftKeyboardに取り組んでいます。キーボードのレイアウトを作成しましたが、EditTextにWordを入力したときに表示される候補を含める方法がわかりません。
たとえば、「Kn」と書くと、「Known」と「Known」が候補に表示されます。
それで私の質問は-
1)Android Softkeyboard?
2)独自の提案リストを含める方法はありますか?
事前に感謝します。
すでに this および this を確認しましたが、適切な答えを見つけることができません。任意の助けいただければ幸いです。
[〜#〜]編集[〜#〜]
下の画像に示すように、キーボードの真上に候補を含めたいです。
静的メソッドUserDictionary.Words.addWord(....)
を使用できます: Link
_if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
// On JellyBean & above, you can provide a shortcut and an explicit Locale
UserDictionary.Words.addWord(this, "MadeUpWord", 10, "Mad", Locale.getDefault());
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
UserDictionary.Words.addWord(this, "MadeUpWord", 10, UserDictionary.Words.LOCALE_TYPE_CURRENT);
}
_
この権限をマニフェストに追加する必要があります。
_<uses-permission Android:name="Android.permission.WRITE_USER_DICTIONARY"/>
_
追加された単語は_Settings > Language & input > Personal dictionary
_に表示されます。
独自のソフトキーボードを実装している場合は、 入力メソッドの作成 を実行することをお勧めします。通常、提案は_Candidates View
_に表示されます。デフォルトでは、InputMethodService#onCreateCandidatesView()
はnullを返します。提案バーの実装を返すには、このメソッドをオーバーライドする必要があります。
候補者ビューを実装するサンプルプロジェクトを次に示します: SoftKeyboard 。
詳細:
単語とフレーズの候補が候補者ビューに表示されます。作成方法と入力方法に関する情報は、上記のサンプルプロジェクトにあります。
私の知る限り、提案する単語/フレーズの選択は開発者の責任です。 Androidはそれらを提供しません。サポートする予定の言語/ロケールごとに1つずつ、辞書のセットが必要になる可能性があります。ユーザー指定の単語の辞書を維持することもできます。
Androidのデフォルトキーボードはこれらを使用します: Link
これらのいずれかをダウンロードした場合は、解凍してテキストエディターで開きます。
_dictionary=main:en,locale=en,description=English,date=1402373178,version=47
Word=the,f=222,flags=,originalFreq=222
Word=to,f=215,flags=,originalFreq=208
Word=of,f=214,flags=,originalFreq=214
Word=and,f=212,flags=,originalFreq=212
Word=in,f=210,flags=,originalFreq=210
.... 165,635 more lines
_
明らかなように、頻度は単語としての適合性を判断する上で極めて重要な役割を果たします。ユーザーがtachometer
と入力したときにta
を提案したくない場合があります。あなたはおそらくdotake
を提案したいでしょう-頻度はそこであなたを助けます。
自動補正:
_Word=id,f=99,flags=,originalFreq=99
shortcut=I'd,f=whitelist
_
フラグは適切性を示しています。
_Word=goddamn,f=0,flags=offensive,originalFreq=62
_
これらの辞書を使用することを決定した場合でも、それらを解析して意味のある提案を取得するためのコードは、ユーザーから取得する必要があります。
_predictive text input
_および_spelling correction
_に関する2つの記事(両方ともPeter Kankowskiによる):
CandidatesView:
CandidatesViewについて最初に知っておくべきこと:これはオプションです。実際、LatinIME
(Androidのデフォルトのソフトキーボード)では使用しません。代わりに、LatinIME
には独自の実装があります-SuggestionStripView
-これは似ています。 InputMethodService#onCreateCandidatesView()
のデフォルトの動作は、nullを返すことです。独自の実装を提供する場合は、このメソッドをオーバーライドしないでください。
CandidatesViewの外観を決定する必要があります。可能な実装の1つはHorizontalScrollView
です。提案を評価した後(たとえば、ユーザーが "as"を書き始め、提案ロジックにより、 "has"、 "was"、 "assist"、 "ask"、 "asked"、を含む_List<String>
_が得られます。 「尋ねる」、「仮定する」)、作成してこれらの文字列を保持するTextViews
をHorizontalScrollView(LinearLayout)
に追加します。このようにして、ユーザーは水平方向にスクロールし、クリックして目的のWordを選択できます。
APIを使用するか、CandidatesView
を自分で処理するかは、あなた次第です。 APIを使用する場合は、InputMetodService#onCreateCandidatesView()
をオーバーライドし、カスタムレイアウトをインフレートしてから返します。それへの参照を保持して、必要なときに更新できるようにします。 _CandidatesView's
_の可視性を制御するには、メソッドsetCandidatesViewShown(boolean)
を使用します。
カスタムキーボードを作成している場合は、 入力メソッドの作成 を試してみることをお勧めします。 サンプルコード 以上です。 CandidateViewは、おそらくあなたが探しているものです。上記のリンクで説明されています。
インラインスペルチェッカーを提供する場合は、チェックアウトする必要があります スペルチェックフレームワーク
お役に立てれば。