如何在rtl语言的软键盘上处理删除键

时间:2013-09-20 07:17:09

标签: android soft-keyboard

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

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);

但这也不能清除以前的任何作曲文本

1 个答案:

答案 0 :(得分: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);
        } 
}