Android的 - 让软键盘按键(android - getting soft keyboard

2019-10-21 15:12发布

我试图让压软键盘上的键,但我不能这样做。 目前我使用下面的代码

@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);

}

它是醒目的硬件键盘,但没有为虚拟一个关键事件。 有人可以帮我吗

Answer 1:

从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
        }
    });


Answer 2:

这应该是您的解决方案:

@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 - getting soft keyboard key presses