我有一个针对API 11及以上版本的项目,因此不使用actionbarsherlock。
我正在使用SearchView启动一个活动。我想立即聚焦SearchView,并使软键盘弹出(如果没有硬件键盘)。我尝试过:
mSearchView.requestFocus();
mSearchView.requestFocusFromTouch();
这段代码确实能够聚焦搜索视图,但是它并没有显示键盘。我已经阅读了其他帖子,称这段代码有效。其他帖子尝试使用以下方法强制弹出键盘:
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(
InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
当我提交搜索查询后,键盘会显示出来,但是它的行为很奇怪 - 它会隐藏自己,然后再次弹出,最后再隐藏。
有没有正确的方法可以让它正常工作?
谢谢
-------- 编辑 ----------------
这是我的设置方式:
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
...
MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) searchItem.getActionView();
mSearchView.setIconifiedByDefault(false);
if (!mDidThisOnce) {
mSearchView.requestFocusFromTouch();
InputMethodManager imm = ...;
imm.toggleSoftInput(...);
mDidThisOnce = true;
}
}
------ 最后编辑 -----------
所以这个方法有效,但我需要保持一个标志来确保我不会多次运行imm代码,否则在提交搜索后它会一直弹出键盘。
mSearchView.setIconofied(false);
吗? - gunarimm.toggleSoftInput
放在哪里了? - shem