![](/img/trans.png)
[英]How to change the (physical) keyboard language in android?(Besides SHIFT-SPACE)
[英]Detect Shift + Enter on physical keyboard in Android
在为 Chromebook 准备我的 Android 应用程序并与物理键盘一起使用时,我想在 EditText 中区分从物理键盘接收“Enter”(keyEvent 66)和“Shift+Enter”(显然也是 keyEvent 66)。 我尝试了许多不同的解决方案,例如
我还没有找到使用 onKeyUp()、onKeyPreIme()、editText.setOnKeyListener(...) 或使用 editText.addTextChangedListener(new TextWatcher() {...}) 的方法。 我在获取 Enter 事件时没有遇到任何问题,但是 Shift+Enter 在我尝试过的所有方式中都与 Enter 事件没有区别。 所以我的问题是:是否有其他 Android 开发人员找到了一种从物理键盘正确捕获 Shift+Enter 的方法?
我遇到了同样的问题,我通过检测“Shift”向下和“Shift”向上事件来修复它,并定义一个存储状态的布尔值。 这是我的代码,希望对您有所帮助。
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;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.