【问题标题】:Android Input method "Enter" button issueAndroid输入法“回车”按钮问题
【发布时间】:2017-07-07 13:22:55
【问题描述】:

我创建了一个自定义输入法,只是键盘不是带有 editText 的完整 IME,但由于某种原因,我的“Enter”按钮不像内置键盘那样执行。在某些应用程序上,例如 Facebook 应用程序,在“密码”字段后面有一个“登录”按钮或一些类似的按钮。当我使用内置键盘并输入密码并按“Enter”按钮时,它开始登录过程,但我的键盘没有这样做。我尝试使用以下方式以不同的方式发送关键事件:

ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));

sendDownUpKeyEvents(KeyEvent.KEYCODE_ENTER);

但两者似乎都没有相同的效果。只是要清楚;这两段代码都满足其他“Enter”功能,例如将文本提交到文本或开始新行。有人可以告诉我我在这里缺少什么吗?

【问题讨论】:

  • 我也在写一个输入法,但遇到了同样的问题。你解决了吗?
  • @DovGrobgeld 嘿,首先让我感谢您参与对话。抱歉,我从来没有解决过。

标签: android enter ime


【解决方案1】:

参考下面的例子,当'换行'时触发 KeyEvent.KEYCODE_ENTER https://cs.android.com/android/platform/superproject/+/master:development/samples/SoftKeyboard/src/com/example/android/softkeyboard/SoftKeyboard.java;l=521;drc=master

private void keyDownUp(int keyEventCode) {
    getCurrentInputConnection().sendKeyEvent(
            new KeyEvent(KeyEvent.ACTION_DOWN, keyEventCode));
    getCurrentInputConnection().sendKeyEvent(
            new KeyEvent(KeyEvent.ACTION_UP, keyEventCode));
}

private void sendKey(int keyCode) {
    switch (keyCode) {
        case '\n':
            keyDownUp(KeyEvent.KEYCODE_ENTER);
            break;
        default:
            if (keyCode >= '0' && keyCode <= '9') {
                keyDownUp(keyCode - '0' + KeyEvent.KEYCODE_0);
            } else {
                getCurrentInputConnection().commitText(String.valueOf((char) keyCode), 1);
            }
            break;
    }
}

【讨论】:

    【解决方案2】:

    试试sendDefaultEditorAction(true) 方法。对于我在 AndroidTV 上的情况,此代码可以正常工作:

    class MyInputMethodService : InputMethodService() {
        
        override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
            if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
                sendDefaultEditorAction(true)
                return true
            }
            return super.onKeyDown(keyCode, event)
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多