编辑器(EditText
等)调用updateSelection
,InputMethodManager
然后通知onUpdateSelection
监听器。因此,键盘可以覆盖onUpdateSelection
和处理那里未完成的作曲范围。
要处理未完成的作曲跨度,您可以finishComposingText
在InputConnection
. 这将删除组成跨度并提交跨度中的任何文本。
以下是它在示例 Android 软键盘中的实现方式:
/**
* Deal with the editor reporting movement of its cursor.
*/
@Override public void onUpdateSelection(int oldSelStart, int oldSelEnd,
int newSelStart, int newSelEnd,
int candidatesStart, int candidatesEnd) {
super.onUpdateSelection(oldSelStart, oldSelEnd, newSelStart, newSelEnd,
candidatesStart, candidatesEnd);
// If the current selection in the text view changes, we should
// clear whatever candidate text we have.
if (mComposing.length() > 0 && (newSelStart != candidatesEnd
|| newSelEnd != candidatesEnd)) {
mComposing.setLength(0);
updateCandidates();
InputConnection ic = getCurrentInputConnection();
if (ic != null) {
ic.finishComposingText();
}
}
}