Spell Checker Framework を調べていて、これを使用してアプリにコードヒントを実装できるかどうか疑問に思っていました。カスタム「コード」辞書を実装できますか? これが着手前のコード補完への可能なアプローチであるかどうか疑問に思っています。
1 に答える
適切なコード補完 (私の個人的な意見では) は、コンテキストに依存し、スコープ内にあり、コード内の現在の位置に適用できるものに対してのみ補完を表示する必要があります。たとえば、Java では、メソッド名の補完をメソッドの外側に表示しても意味がありません。コード コメントについて英語の辞書に対して単純なスペル チェックを行うことは理にかなっていますが、メソッドや変数名などについてはそうではありません。
完全に機能するコード エディターが必要な場合は、独自のエディターを作成し (たとえば、TextView 自体を使用しない)、システム スペル チェッカー API を使用してコード コメントをスペル チェックするなど、独自の補完を行う必要があると思います。独自のコード エディターと補完 UI をエディター レベルで (他のオープン ソース コード エディターと組み合わせて) 実装する方法については、TextView.java と Editor.java のソース コードを参照してください。
ニーズが比較的単純な場合は、TextView のテキストに SuggestionSpan タイプのスパンを追加することで解決できる場合があります (これはスペル チェッカーが行うことです)。
スペル フレームワークは基本的に、文脈をあまり考慮せずに辞書に対して 1 つまたは複数の単語をチェックするように設計されています。(SpellCheckerSession を参照してください。コンテキストはあまり得られません。)
別のこと: テキストを積極的に作成する (単語を入力する) 間、補完は通常、入力メソッドによって処理されます。これは、(通常) 補完をソフト入力領域の単語選択リストに表示します。入力メソッドは、InputType で定義されたエディター タイプの補完のみを処理するため、おそらくこれらの補完/提案は必要ありません。また、エディターをプレーン テキストとしてスプーフィングしようとすると、おそらく理想的な結果とは言えません。あなたの場合、おそらくエディターで補完を処理し (スペルミスの単語をタップしたときに TextView が提案を処理するのと同じように)、エディターが TYPE_TEXT_FLAG_NO_SUGGESTIONS (スペルチェッカーも無効にする) を介して IME 提案を無効にするようにします。あなたが本当に野心的であれば、あなたのエディターに合わせてインプットメソッドを書くこともできると思います。