【问题标题】:Unable to hide the virtual keyboard of SearchView iconfiedbydefault(false)无法隐藏 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 搜索视图小部件。任何隐藏虚拟键盘的建议。我做错了什么?

【问题讨论】:

    标签: android actionbarsherlock searchview optionmenu


    【解决方案1】:

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

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

    【讨论】:

    • 这对已经提到该功能的其他答案有何改进?
    【解决方案2】:

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

     android:focusable="false"
    

    【讨论】:

      【解决方案3】:

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

       @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;
              }
      
           });
      

      【讨论】:

      • 尝试了数十种方法后,这对我有用!非常感谢!
      【解决方案4】:

      在 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;
      

      【讨论】:

        【解决方案5】:

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

        mSearchView.clearFocus();
        

        【讨论】:

        • 你知道怎么可能再次打开键盘吗?
        【解决方案6】:

        试试

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

        【讨论】:

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

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

         android:windowSoftInputMode="adjustPan|stateHidden"
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多