Не удалось скрыть виртуальную клавиатуру SearchView iconfiedbydefault (false)

У меня есть поиск, который по умолчанию задан по умолчанию с поисковым запросом по умолчанию, но я не хочу виртуальную клавиатуру. В приведенном ниже коде я пытался скрыть клавиатуру в 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);

Ответ 4

добавьте нижнюю строку в манифест для конкретной операции.

 android:windowSoftInputMode="adjustPan|stateHidden"

Ответ 5

В манифесте 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;

Ответ 6

простое решение для моей работы добавить в XML:

 android:focusable="false"