Java android-获得软键盘按键
我正试图让软键盘上的键按下,但无法做到这一点。 目前我正在使用以下代码Java android-获得软键盘按键,java,android,keyboard,keyevent,Java,Android,Keyboard,Keyevent,我正试图让软键盘上的键按下,但无法做到这一点。 目前我正在使用以下代码 @Override public boolean dispatchKeyEvent(KeyEvent KEvent) { int keyaction = KEvent.getAction(); if(keyaction == KeyEvent.ACTION_DOWN) { int keycode = KEvent.getKeyCode(); int keyunicode = KEvent.getUnico
@Override
public boolean dispatchKeyEvent(KeyEvent KEvent)
{
int keyaction = KEvent.getAction();
if(keyaction == KeyEvent.ACTION_DOWN)
{
int keycode = KEvent.getKeyCode();
int keyunicode = KEvent.getUnicodeChar(KEvent.getMetaState() );
char character = (char) keyunicode;
System.out.println("DEBUG MESSAGE KEY=" + character + " KEYCODE=" + keycode);
}
return super.dispatchKeyEvent(KEvent);
}
它捕捉的是硬件键盘的按键事件,而不是虚拟键盘的按键事件。有人能帮我一下吗
注意:当使用KeyEvent类和相关API处理键盘事件时,您应该期望此类键盘事件仅来自硬件键盘。您永远不应该依靠软输入法(屏幕键盘)接收任何键的键事件
因此,您应该使用界面来观察软键盘上按下的字符,例如:
myEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
这应该是您的解决方案:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 1) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
默认的android软件键盘根本不会触发监听器的方法。这是一个有用的解决方案,砰的一声。