Скрыть клавиатуру после поиска пользователя?

Хорошо, поэтому у меня есть активность, где есть EditText, и на ввод ключевых результатов поиска отображаются, поэтому я просто хочу закрыть клавиатуру, когда результаты поиска будут показаны, чтобы не дать пользователю Это. Однако, если пользователь хочет уточнить свой поиск, клавиатура должна открыть резервную копию, если он снова войдет в EditText.

Это было сложнее, чем я себе представлял, я искал и пробовал несколько вещей, которые даже не закрывают клавиатуру на моем HTC, один метод, когда для InputType установлено значение INPUT_NULL, закрывает клавиатуру, t после этого.

Любые предложения о том, как это сделать?

Ответ 1

@Override
public boolean onQueryTextSubmit(String query) {
    // Your search methods

    searchView.clearFocus();
    return true;
}

Прямо в точку и очистить.

Ответ 2

Правильный способ сделать это:

  • установите imeOptions на "actionSearch"
  • инициализировать слушателей для кнопки ввода и поиска (если предоставлено)

    searchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                performSearch();
                return true;
            }
    
            return false;
        }
    });
    view.findViewById(R.id.bigSearchBar_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            performSearch();
        }
    });
    
  • Скрыть клавиатуру, когда пользователь нажимает на поиск. Чтобы убедиться, что клавиатура не будет отображаться, когда пользователь минимизирует и восстанавливает Activity, вам необходимо удалить фокус с EditText

    private void performSearch() {
        searchEditText.clearFocus();
        InputMethodManager in = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        in.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0);
        ... perform search ...
    }
    

Ответ 3

Я верю, что этот фрагмент кода закроет клавиатуру:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

если не попробовать:

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

сообщите мне, если они работают

Ответ 4

Друг использует следующее, чтобы скрыть keybord this

InputMethodManager in = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
in.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

или используйте этот

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