【问题标题】:Use “ENTER” key on softkeyboard to initiation an Event使用软键盘上的“ENTER”键启动事件
【发布时间】:2015-11-16 15:03:06
【问题描述】:

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

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

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    好的,感谢 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 存储库中找到的 InputTypeUtils.java 类中复制了必要的方法。

    【讨论】:

    • 很抱歉无法回答,但我已经很乐意提供帮助。祝你发展顺利:)
    【解决方案2】:

    您正在使用KEYCODE_SHIFT,它实际上是将键盘从大写更改为小写的那个。 Enter keycode 应该是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;
        }
    }
    

    【讨论】:

    • 真正的线路是KeyEvent.KEYCODE_ENTER。另外,我不知道 case 语句中有哪些代码行。这是我真正的问题:)
    • @sometimes24 我的错误,对不起。但你到底想要什么?要按 ENTER 键并为另一个键启动事件?
    • 因为它是一个键盘,当我按下 ENTER 键时 - 我想启动一个操作按钮。我可能没有解释清楚,所以希望我的例子有意义。如果我在 Internet 应用程序中并且正在键入一个超链接,我希望在按 ENTER 时启动搜索命令,而不是我看到的空格字符(因为它没有正确编程)。
    • 谢谢你——这让我朝着正确的方向前进。我在这里粘贴了我的答案。只是想注意 - KeyEvent.KEYCODE_ENTER 是 66,当我在我的应用程序上使用它时它打印 B。它们的键是根据它们的 ASCII 值使用的。数字 10(换行)产生正确的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-11-08
    • 2011-05-25
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 2019-11-19
    相关资源
    最近更新 更多