使用软键盘上的“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
复制了必要的方法。
我正在设计 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
复制了必要的方法。