【问题标题】:Why does Android Soft Keyboard close when I press "Enter" (and not make a newline)当我按“Enter”(而不是换行)时,为什么Android软键盘会关闭
【发布时间】:2014-09-05 18:54:42
【问题描述】:

android软键盘是通过上下文菜单切换的

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

它可以很好地输入文本,但是当按下 Enter 时,键盘会关闭。 onKeyDown(int keyCode, KeyEvent event) 中没有捕获任何内容

布局看起来像this

额外信息:对于那些想知道的人来说,键盘输入是通过 TCP 连接发送的,而不是进入布局中的任何视图。

【问题讨论】:

    标签: java android android-softkeyboard


    【解决方案1】:

    检查你的 xml 可能是你设置 maxline=1 或者可能是给 singleLine="true"

    【讨论】:

    • 布局中没有EditText。键盘没有在任何地方插入文本(我正在使用按键进行其他操作)。已使用布局链接更新了问题。感谢您的回复!
    【解决方案2】:

    好吧,所以这个问题没有引起注意,但我会把我的解决方案放在这里,以防其他人遇到这个问题。

    出于某种原因,Android 决定在输入文本后(周围没有 EditText),Enter 键现在是一个操作按钮,而不是换行键。

    我设法通过在dispatchKeyEvent() 而不是onKeyPress() 中接收按键来捕获输入

    @Override
    public boolean dispatchKeyEvent(KeyEvent ke)
    {
    
        int unicode = ke.getUnicodeChar();
        if (ke.getAction() == 0 && ke.getKeyCode() == KeyEvent.KEYCODE_ENTER) // getAction() returns 1 (up) or 0 (down). 
        {
            // do my work here
            return true; // end here (doesn't go to onKeyDown())
        } else
        return super.dispatchKeyEvent(ke);
    }
    

    此事件在按键时触发两次,因此在 if 语句中使用 getAction() 很重要。对于所有其他键盘按键,我使用了 onKeyDown(),这就是为什么如果不是 Enter 键则返回 super.dispatchKeyEvent(ke); 很重要。

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 2020-01-03
      相关资源
      最近更新 更多