我试图让压软键盘上的键,但我不能这样做。 目前我使用下面的代码
@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);
}
它是醒目的硬件键盘,但没有为虚拟一个关键事件。 有人可以帮我吗
从Android的官方网页
注意:当处理与该KeyEvent类和相关API的键盘事件,你应该预料到这样的键盘事件从硬件键盘只来了。 你永远不应该依赖于接收重要事件,对软输入法(屏幕键盘)任意键。
所以,你应该用TextWatcher接口,观察压在SoftKeyboard,例如字符:
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);
}