2013-07-23 56 views
0

我在看拼寫檢查框架,並想知道我是否可以使用它在我的應用程序中實現代碼提示。我可以實現一個自定義的「代碼」字典嗎?只是想知道這是否是在開始之前完成代碼完成的可能方法。拼寫檢查框架可以用於代碼提示嗎?

回答

1

良好的代碼完成(在我個人看來)是上下文敏感的,應該只顯示範圍內並且適用於代碼中當前位置的事物的完成。例如,在java中,在方法外顯示方法名稱完成沒有意義。對於代碼註釋來說,對英文字典進行明文拼寫檢查是有意義的,但對於方法和變量名稱不能進行拼寫檢查。

如果您想要一個功能完整的代碼編輯器,我認爲您需要提供自己的編輯器(例如,本身不使用TextView)並執行自己的完成操作,也許使用系統拼寫檢查API來拼寫檢查代碼註釋。您可能需要查看TextView.java和Editor.java的源代碼,以瞭解如何在編輯器級別實現自己的代碼編輯器和完成UI(可能與其他開放源代碼編輯器一起使用)。

如果您的需求相對簡單,您可以通過將類型SuggestionSpan的跨度添加到TextView中的文本(這是拼寫檢查程序所執行的操作)來完成信息。

拼寫框架基本上被設計爲檢查一個或多個字詞而不考慮上下文。 (請參閱SpellCheckerSession。您沒有得到很多上下文。)

另一件事:當主動編寫文本(輸入一個詞)時,完成通常由輸入方法處理,它顯示一個詞中的完成詞(通常)軟輸入區域中的選項列表。由於輸入方法只處理由InputType定義的編輯器類型的完成項,並且如果試圖欺騙編輯器(如純文本),您可能不希望這些完成/建議,因此您可能得不到理想的結果。在你的情況下,你可能想要在編輯器中處理完成(有點像TextView在拼寫錯誤的單詞時處理建議的方式),並確保編輯器通過TYPE_TEXT_FLAG_NO_SUGGESTIONS(禁用拼寫檢查器)禁用IME建議。如果你真的有雄心壯志,我​​想你也可以編寫一個輸入法來和你的編輯一起工作。

+0

非常感謝您的詳細解答! – RapsFan1981

+0

不客氣。我碰巧一直在研究TextView和相關代碼以及它使用拼寫檢查器服務的方式。 – user1170291