当我按下"输入"为什么Android软键盘关闭? (而不是换行)

时间:2014-09-04 10:41:08

标签: java android android-softkeyboard

通过

从上下文菜单切换android软键盘
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

它可以很好地输入文字,但按下Enter键后,键盘会关闭。 onKeyDown(int keyCode, KeyEvent event)

中没有捕获任何内容

布局看起来像this

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

出于某种原因,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);很重要。