使用软键盘上的“ENTER”键启动事件

Use “ENTER” key on softkeyboard to initiation an Event

我正在设计 android 键盘,但在从键盘启动操作命令时遇到困难。

当我在我的设备上使用 Internet 并在输入网站后按 enter 而不是转到新页面时,会显示 space 并且没有采取任何行动。我不确定如何让我的 enter 键在按下时变成操作键。

这是我认为应该修改的代码:

@Override
public void onKey(int primaryCode, int[] keyCodes) {
    InputConnection ic = getCurrentInputConnection();
    switch (primaryCode) {

    case Keyboard.KEYCODE_SHIFT:
        handleShift();
        break;

    case 10:
        //Initiate enter event or new line depending on program being used
        break;
    }
}

如有任何帮助,我们将不胜感激。

您正在使用 KEYCODE_SHIFT,这实际上是将键盘从大写更改为小写。 Enter 键码应该是 KEYCODE_ENTER,它的值是 66,而不是 10。

case 10 would be KEYCODE_3, the number 3, not enter. See here.


您拥有正确的代码,您只需更改 KEYCODE 并添加所需的代码行即可。

@Override
public void onKey(int primaryCode, int[] keyCodes) {

    switch (primaryCode) {    
        case KeyEvent.KEYCODE_ENTER:
            // Enter has been pressed
        break;
    }
}

好的,感谢 George Rappel - 我被送往了正确的方向。我在在线 android 源代码中找到了我的解决方案 - 花了一些时间寻找它。下面是 ENTER 的代码 - 其中 ENTER 是值 10.

case ENTER:

        final EditorInfo editorInfo = getCurrentInputEditorInfo();
        final int imeOptionsActionId = InputTypeUtils.getImeOptionsActionIdFromEditorInfo(editorInfo);
        if (InputTypeUtils.IME_ACTION_CUSTOM_LABEL == imeOptionsActionId) {
            // Enter used as submission
            ic.performEditorAction(editorInfo.actionId);
        } else if (EditorInfo.IME_ACTION_NONE != imeOptionsActionId) {
            // Not quite sure what this is for
            ic.performEditorAction(imeOptionsActionId);
        } else {
            // Enter being used as text
            ic.commitText(String.valueOf((char) primaryCode), 1);
        }
        break;

我还从在线 android 存储库中找到的 class InputTypeUtils.java 复制了必要的方法。