无法隐藏 SearchView 的虚拟键盘 iconfiedbydefault(false)

Posted

技术标签:

【中文标题】无法隐藏 SearchView 的虚拟键盘 iconfiedbydefault(false)【英文标题】:Unable to hide the virtual keyboard of SearchView iconfiedbydefault(false) 【发布时间】:2013-04-17 13:46:33 【问题描述】:

我有一个搜索视图,默认设置为默认搜索查询扩展,但我不想要虚拟键盘。在下面的代码中,我试图在 onCreateOptionsMenu 中隐藏键盘,但键盘仍然是可见。

imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    MenuItem item = menu.findItem(R.id.menu_search);
    item.expandActionView();
    mSearchView = (SearchView) item.getActionView();
    mSearchView.setIconifiedByDefault(false);
    mSearchView.setQuery(query, true);
    imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0);

我正在使用 sherlock 搜索视图小部件。任何隐藏虚拟键盘的建议。我做错了什么?

【问题讨论】:

【参考方案1】:

受到 Parnit 回答的启发,我找到了一种更好的方法,它也有效并且更漂亮:

mSearchView.clearFocus();

【讨论】:

你知道怎么可能再次打开键盘吗?【参考方案2】:

编辑:我在顶部添加了更好的解决方案,但也保留了旧答案作为参考。

 @Override
        public boolean onQueryTextSubmit(String query) 

                  searchView.clearFocus();
            return false;
        

原始答案:我使用 setOnQueryTextListener 进行编程。当搜索视图被隐藏时,键盘消失,然后当它再次可见时,键盘不会弹回。

    //set query change listener
     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
        @Override
        public boolean onQueryTextChange(String newText) 
            // TODO Auto-generated method stub
            return false;
        

        @Override
        public boolean onQueryTextSubmit(String query) 
            /**
             * hides and then unhides search tab to make sure keyboard disappears when query is submitted
             */
                  searchView.setVisibility(View.INVISIBLE);
                  searchView.setVisibility(View.VISIBLE);
            return false;
        

     );

【讨论】:

尝试了数十种方法后,这对我有用!非常感谢!【参考方案3】:

试试

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

【讨论】:

+1。或者如果不需要手动设置键盘隐藏,只需将android:windowSoftInputMode="stateAlwaysHidden" 放在 android manifest 上。【参考方案4】:

在清单中为特定活动添加以下行。

 android:windowSoftInputMode="adjustPan|stateHidden"

【讨论】:

adjustPan 在这里是为了什么目的?单独使用stateHidden 还不够吗? 通过使用 adjustPan 当前焦点永远不会被键盘遮挡.. 更多信息请到这里.. developer.android.com/guide/topics/manifest/…【参考方案5】:

简单的解决方案它对我的工作 添加到 XML:

 android:focusable="false"

【讨论】:

【参考方案6】:

在 Android 清单中:

 android:windowSoftInputMode="adjustPan|stateHidden"

在课堂上打开和关闭键盘:

   @Override
  public boolean onOptionsItemSelected(MenuItem item) 
      // Handle action buttons
      switch(item.getItemId()) 
case R.id.search:
         //TODO Whatever
          search.clearFocus();
         //Open and close the  keyboard
          InputMethodManager imm = (InputMethodManager)MyApplication.getAppContext().getSystemService(
                  Context.INPUT_METHOD_SERVICE);
          imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
          imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
          return true;

【讨论】:

【参考方案7】:

你只需要使用: "object(edittext, searchview, etc)".clearfocus() ;

在您生成搜索或操作后使用它。示例:在 OnQueryTextListener 方法中,之后我使用搜索。用于搜索视图。

【讨论】:

这对已经提到该功能的其他答案有何改进?

以上是关于无法隐藏 SearchView 的虚拟键盘 iconfiedbydefault(false)的主要内容,如果未能解决你的问题,请参考以下文章

如何显示被虚拟键盘隐藏的文本字段?

如何在 Android SearchView 中关闭键盘?

SearchView 展开后隐藏的操作栏图标

使用 SearchView 在搜索操作栏激活时显示软键盘

虚拟键盘隐藏字段/文本区域/内容可编辑(隐藏在键盘下方)

手机端页面,隐藏虚拟键盘