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

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

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

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

person shivani gupta    schedule 20.02.2017    source источник
comment
я написал, проверьте пожалуйста   -  person shivani gupta    schedule 20.02.2017


Ответы (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);
}
person 11m0    schedule 25.04.2017
comment
Если вы используете представление поиска совместимости, вы можете напрямую использовать findViewById(R.id.search_close_btn) - person Jacques Giraudel; 23.06.2017
comment
Работал на меня. Спасибо. - person statosdotcom; 05.02.2020