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

时间:2015-08-22 21:49:22

标签: android android-softkeyboard enter android-event soft-keyboard

我正在设计一个Android键盘,并且很难从键盘启动一个动作命令。

当我在我的设备上使用互联网并在键入网站后按输入,而不是转到新页面时,会显示一个空格并且不会执行任何操作。我不确定在按下时如何使我的 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;
    }
}

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

好的,感谢乔治·拉佩尔 - 我被送往了正确的方向。我在在线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存储库中找到的类InputTypeUtils.java复制了必要的方法。

答案 1 :(得分:0)

您正在使用KEYCODE_SHIFT,这实际上是将键盘从大写改为小写的人。 Enter键代码应为KEYCODE_ENTER,其值为66,而非10。

case 10将是KEYCODE_3,数字3,而不是输入。 See here

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

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

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