Android键盘用emojis实现退格键

时间:2017-01-11 11:35:13

标签: android keyboard android-softkeyboard

我已经为Android安装了一个带有内置表情符号键盘的软键盘。

我的问题是使用退格按钮,当我删除一个字符时它没关系但是当我删除一个表情符号它不能很好。 的

  final EmojiconsPopup popup = new EmojiconsPopup(kv.getRootView(), this);
    popup.setSizeForSoftKeyboard();
    popup.setOnEmojiconBackspaceClickedListener(new EmojiconsPopup.OnEmojiconBackspaceClickedListener() {
        @Override
        public void onEmojiconBackspaceClicked(View v) {
            InputConnection ic = getCurrentInputConnection();
            ic.deleteSurroundingText(1, 0);
        }
    });

如果我将行更改为

ic.deleteSurroundingText(2, 0);

表情符号删除得很好,但字符将一次删除两个。

有关如何解决此问题的任何想法?

更新

经过一番调查后,我发现一些表情符号是一个字母(就像一个普通的字母)和两个字符,有关如何区别它们的任何想法吗?

1 个答案:

答案 0 :(得分:0)

尝试一下, 使用Charactor.isSurrogate检查其表情符号

CharSequence c = inputConnection.getTextBeforeCursor(1, 0);
if(c.length() > 0 && Character.isSurrogate(c.charAt(0))){
        KeyEvent keyEventDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL);
        inputConnection.sendKeyEvent(keyEventDown);
        return;
}