聚焦SearchView以便出现软键盘?

时间:2013-09-15 14:03:02

标签: android

我有一个针对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代码,否则在提交搜索后它会不断弹出键盘。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。

之前我使用过searchView.clearFocus();,这对我有用。