在准备我的适用于Chromebook的Android应用程序并与物理键盘一起使用时,我想在EditText中区分接收" Enter" (keyEvent 66)和" Shift + Enter" (也显然是keyEvent 66)来自物理键盘。我尝试了许多不同的解决方案,例如
我还没有找到使用onKeyUp(),onKeyPreIme(),editText.setOnKeyListener(...)或者使用editText.addTextChangedListener(new TextWatcher(){...})的方法。我在获取Enter事件时没有遇到任何问题,但是Shift + Enter是我尝试过的与Enter事件无法区分的所有方式。所以我的问题是:是否有其他Android Dev找到了从物理键盘正确捕获Shift + Enter的方法?
答案 0 :(得分:1)
我有同样的问题,我通过检测" Shift"来修复它。向下和"转移" up事件,并定义一个存储状态的布尔值。 这是我的代码,希望能帮到你。
final boolean[] isPressed = {false};
inputEditText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
if (isPressed[0]) {
// Shift + Enter pressed
return false;
} else {
// Enter pressed
return true;
}
}
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT)) {
isPressed[0] = true;
return false;
}
if ((event.getAction() == KeyEvent.ACTION_UP) &&
(keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT)) {
isPressed[0] = false;
return false;
}
return false;
}
});