Как установить кнопку х один раз, чтобы очистить текст, а второй, чтобы закрыть SearchView Android? - PullRequest
1 голос
/ 05 ноября 2019

У меня есть SearchView:

SearchView searchView = findViewById(R.id.search);

Как только я пишу текст и нажимаю кнопку очистки, текст очищается, и если я нажимаю снова, поиск закрывается. Если использовать следующие строки кода:

ImageView clearButton = searchView.findViewById(androidx.appcompat.R.id.search_close_btn);
clearButton.setOnClickListener(v -> {
    searchView.setQuery("", false);
});

Поведение по умолчанию перестает работать. Я установил функцию прослушивания щелчка на кнопке, и она работает нормально, но при повторном нажатии поиск не закрывается, как это было раньше. Как закрыть поиск по нажатию второй кнопки?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2019

Используйте setIconified до true, чтобы закрыть SearchView

clearButton.setOnClickListener(v -> {
    if(searchView.getQuery().length() == 0) {
        searchView.setIconified(true);
    } else {
        searchView.setQuery("", false);
    }
});
0 голосов
/ 05 ноября 2019
if (!searchView.isIconified()) {
    searchView.onActionViewCollapsed();
} else {
    super.onBackPressed();
}
...