我有一个针对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代码,否则在提交搜索后它会不断弹出键盘。
答案 0 :(得分:1)
我遇到了同样的问题。
之前我使用过searchView.clearFocus();
,这对我有用。