5

我有一个搜索视图,默认情况下使用默认搜索查询设置为扩展,但我不想要虚拟键盘。在下面的代码中,我试图在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);

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

4

7 回答 7

14

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

mSearchView.clearFocus();
于 2014-03-06T10:14:08.230 回答
4

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

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

     });
于 2013-08-20T16:26:17.197 回答
3

尝试

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
于 2013-04-24T06:37:05.333 回答
1

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

 android:windowSoftInputMode="adjustPan|stateHidden"
于 2013-04-24T06:24:44.050 回答
1

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

 android:focusable="false"
于 2017-10-24T14:40:19.000 回答
0

在 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;
于 2014-11-13T02:03:05.607 回答
0

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

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

于 2019-03-17T02:20:37.067 回答