View.onCreateInputConnection() 返回自定義 BaseInputConnection 子類實例。getCurrentInputConnection() 獲取 InputConnection 調用方法。| 類別 | 方法 | 說明 |
|---|---|---|
| 文本操作 | commitText(CharSequence, int) | 提交文本到編輯器,可指定新光標位置 |
setComposingText(CharSequence, int) | 設置正在輸入中的組合文本(帶下劃線標記) | |
finishComposingText() | 結束組合,將組合文本轉為正式文本 | |
| 光標/選區 | getSelectedText(int) | 獲取選區文本 |
setSelection(int, int) | 設置選區範圍 | |
deleteSurroundingText(int, int) | 刪除光標前後指定長度文本 | |
| 按鍵事件 | sendKeyEvent(KeyEvent) | 發送原始按鍵事件(如回車、刪除) |
| 信息查詢 | getTextBeforeCursor(int, int) / getTextAfterCursor | 獲取光標前/後文本,用於聯想、自動糾錯 |
正在輸入的文本(如拼音未確認的漢字)標記為 Spanned.SPAN_COMPOSING。IME 通過 setComposingRegion(start, end) 設置,Editor 高亮顯示。Composing Region 與 Selection 獨立。
BaseInputConnection 重寫所需方法,確保行為與標準 EditText 一致。InputConnection 方法時盡量保守發送數據,寬容接收數據;充分測試多語言(CJK、RTL)。