Скрыть клавиатуру после поисковых запросов? - PullRequest
15 голосов
/ 24 марта 2012

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

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

Есть предложения о том, как это сделать?

Ответы [ 3 ]

19 голосов
/ 02 июля 2014
@Override
public boolean onQueryTextSubmit(String query) {
    // Your search methods

    searchView.clearFocus();
    return true;
}

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

11 голосов
/ 12 июля 2013

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

  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 ...
    }
    
3 голосов
/ 24 марта 2012

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

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

, если не попробуете это:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...