0

我有一个启用了 textfilter 的列表视图。在某些设备上,当您长按菜单按钮时会显示键盘,但在某些设备上,通常无法显示键盘。

有谁知道如何在长按菜单按钮时显示键盘。我已经有一个代码,但它不工作。键盘不显示。

我的代码:

@Override
public boolean onKeyLongPress(int keycode, KeyEvent event){         
    if (keycode == KeyEvent.KEYCODE_MENU){              
        InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.showSoftInput(lv, InputMethodManager.SHOW_IMPLICIT);             
    }
    return true;
}

提前致谢!

4

2 回答 2

0

您需要将键盘聚焦在某个editText上

所以:

EditText etHello= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(etHello, InputMethodManager.SHOW_IMPLICIT);
于 2012-08-05T14:07:14.917 回答
0

你用 -flat 调用showSoftInput()-method SHOW_IMPLICIT。它的文档说:

用于指示这是显示输入窗口的隐式请求的标志,而不是用户直接请求的结果。showSoftInput(View, int) 在这种情况下,窗口可能不会显示。

由于您希望在用户按住菜单按钮时显示键盘,因此它不再是隐式的。尝试传入0平面参数。

也可以切换键盘,这似乎也适用于其他人。为此,请参阅这个较旧的问题:android - 按需显示软键盘


问题出在您的- 方法中onKeyLongPress()。要使用菜单按钮,需要做一些额外的工作。请参阅我对这个较旧问题的回答:如何在物理菜单按钮上创建长触摸事件?

最后但并非最不重要的一点是,您应该知道菜单按钮已被弃用,并且在较新的设备上不存在。出于兼容性原因,您将获得它的模拟版本,但 ActionBar(和它的搜索字段)应该比传统支持更受青睐。因此,您可能需要检查替代方案。

于 2012-08-05T14:10:58.470 回答