Скрыть клавиатуру после поисковых запросов?
У меня есть действие, в котором есть EditText, и при вводе отображаются результаты поиска по клавише, поэтому я просто хочу закрыть клавиатуру, когда результаты поиска будут отображаться, чтобы пользователь не смог это сделать. Однако, если пользователь хочет уточнить свой поиск, клавиатура должна открыться снова, если он снова нажмет на EditText.
Это оказалось сложнее, чем я себе представлял, я искал и пробовал несколько вещей, большинство из которых даже не закрывают клавиатуру на моем HTC, один метод, когда InputType установлен на INPUT_NULL, закрывает клавиатуру, но потом не открывается,
Любые предложения о том, как это сделать?
4 ответа
@Override
public boolean onQueryTextSubmit(String query) {
// Your search methods
searchView.clearFocus();
return true;
}
Прямо в точку и чисто.
Правильный способ сделать это:
- задавать
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 ... }
Я полагаю, что этот фрагмент кода закроет клавиатуру:
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);