закрыть прослушиватель searchview в макете не работает Android


Я создаю приложение для android, в которое я встроил searchview ниже панели инструментов. Смотрите Скриншот. Но когда я нажимаю на значок поиска, моя клавиатура появляется, но когда я нажимаю закрыть значок searchview, клавиатура не исчезает. Закрыть слушателя не работает, и действие развернуть или свернуть слушателя не может быть использовано, потому что это не menuitem. Так как же должна исчезнуть клавиатура. Пожалуйста, проводник.

Введите описание изображения здесь

 simpleSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {
            hideKeyboard(getActivity());
            return false;
        }
    });
1 2

1 ответ:

Это можно сделать, получив ссылку на кнопку [x], а затем установив на ней прослушиватель onClick. В onClickListener можно добавить логику, чтобы скрыть клавиатуру.

Приведенный ниже код был получен из этого ответа

// Catch event on [x] button inside search view
int searchCloseButtonId = searchView.getContext().getResources()
                .getIdentifier("android:id/search_close_btn", null, null);
ImageView closeButton = (ImageView) this.searchView.findViewById(searchCloseButtonId);
// Set on click listener
closeButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       // Manage this event.
    }
});

Внутри onClick(View v) Вы можете вызвать метод, чтобы скрыть клавиатуру, как это

private void hideKeyboard(){
    View view = this.getCurrentFocus();
    if (view != null) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}