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

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

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

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

4 ответа

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

    searchView.clearFocus();
    return true;
}

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

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

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

    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();
        }
    });
    
  3. Скрыть клавиатуру, когда пользователь нажимает кнопку поиска. Чтобы клавиатура не отображалась, когда пользователь сворачивает и восстанавливает Activity Вы должны удалить фокус с EditText

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

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

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

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

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

дайте мне знать, если эти работы

Используйте следующее, чтобы скрыть клавиатуру:

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

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

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Другие вопросы по тегам