0

在我的软键盘中,我可以完美地捕获要删除的事件键,如下所示

public void onKey(int primaryCode, int[] keyCodes) {
    if (primaryCode == Keyboard.KEYCODE_DELETE) {
        int ccLength = composingContent.length();
        if (ccLength > 1) {
            composingContent.delete(ccLength - 1, ccLength);
            getCurrentInputConnection().setComposingText(composingContent, ccLength - 1);
        }
    }
}

问题是当设置新的 composingContent 时,它会附加到旧文本的末尾。它不会清除旧内容。我也用过

getCurrentInputConnection().commitText(composingContent, ccLength - 1);

但这也没有清除以前设置的任何组成文本

4

1 回答 1

0

我找到了一个方法。这种方法解决了我的问题,但我认为应该有更好的方法。我发布这个以防有人感兴趣。我所做的是在调用 setComposingText 之前,首先,我调用了 setSelection。通过这样做,我选择了输入中的所有文本,然后设置了撰写文本。

InputConnection conn = getCurrentInputConnection();
    if (conn != null) {
        int ccLength = composingContent.length();
        if (ccLength > 1) {
            composingContent.delete(ccLength - 1, ccLength);
            conn.setSelection(0, ccLength);
            conn.setComposingText(composingContent, 1);
        } 
}
于 2013-09-24T15:00:52.640 回答