2013-04-24 3 views
6

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

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

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

+0

http://stackoverflow.com/questions/9629313/auto- collapse-actionbar-searchview-on-soft-keyboard-close –

+0

вышеупомянутый пост отличается от моего pr oblem. Мое объявление поиска рушится на обратном нажатии клавиши. Мне нужно отключить это поведение по умолчанию. Я не хочу, чтобы поиск выглядел рушительным, он должен всегда расширяться? любое предложение ? – user1526671

+0

Вы получили ответ для этого? –

ответ

0

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

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; 
+1

поиск в обратном направлении не вызывает onKeydown Override метод – user1526671

0

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); 
} 
Смежные вопросы