как отключить свертывание представления поиска при нажатии клавиши «Назад» Android

Я использовал виджет поиска Sherlock на панели действий для меню поиска. Фрагмент кода для инициализации представления поиска

        MenuItem item = menu.findItem(R.id.menu_search);
    item.expandActionView();
    mSearchView = (SearchView) item.getActionView();
    mSearchView.setIconifiedByDefault(false);
    mSearchView.setQuery(query, false);
    mSearchView.clearFocus();

Приведенный выше код показывает расширенное представление поиска с поисковым запросом по умолчанию. Проблема в том, что когда я нажимаю кнопку «Назад», представление поиска снова рушится, прежде чем вернуться к предыдущей активности в Android. Я не хочу, чтобы окно поиска сворачивалось при нажатии клавиши «Назад». Как предотвратить сворачивание представления поиска при нажатии клавиши «Назад»?


person user1526671    schedule 24.04.2013    source источник
comment
stackoverflow.com/ вопросы/9629313/   -  person Nickolai Astashonok    schedule 24.04.2013
comment
сообщение выше отличается от моей проблемы. Мое представление поиска сворачивается при нажатии клавиши «Назад». Я должен отключить это поведение по умолчанию. Я не хочу, чтобы вид поиска сворачивался, его нужно всегда расширять? любое предложение ?   -  person user1526671    schedule 24.04.2013
comment
вы получили ответ на это?   -  person Vaibhav Gupta    schedule 28.10.2015


Ответы (2)


SearchView.setIconifiedByDefault(false) должно быть достаточно, если вы установили атрибут android:showAsAction="always" в своем меню xml.

Следующий фрагмент работает для меня:

default_options.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    <item android:id="@+id/action_search"
        android:title="@string/search"
        android:icon="@drawable/topbar_busqueda"
        androidshowAsAction="always"
        android:actionViewClass="android.support.v7.widget.SearchView" />
</menu>

Активность

 @Override
 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
     inflater.inflate(R.menu.default_options menu);
     MenuItem menuItem = menu.findItem(R.id.action_search);
     SearchView searchView = (SearchView) menuItem.getActionView();
     prepareSearchViewAdapter(searchView, menuItem);
     super.onCreateOptionsMenu(menu, inflater);
 }

private void prepareSearchViewAdapter(final SearchView searchView, MenuItem menuItem) {
    searchView.setIconifiedByDefault(false);
}
person Juan José Melero Gómez    schedule 07.07.2015
comment
Все еще работает в 2020 году с androidx.appcompat.widget.SearchView. Моего поиска не было в меню, поэтому мне не нужно было устанавливать showAsAction="always" - person Cullub; 18.03.2020

Добавьте логическое значение, когда представление поиска открыто, как это

private Boolean isSearchPageIsOpen = true;

Затем добавьте четное нажатие кнопки «Назад»

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            if(isSearchPageIsOpen ){

                do something here
        }
        return false;
person vinoth    schedule 24.04.2013
comment
Нажатие назад при просмотре поиска не вызывает метод переопределения onKeydown - person user1526671; 24.04.2013