2013-04-24 11 views
6

Ho usato il widget di visualizzazione ricerca Sherlock nella barra delle azioni per il menu di ricerca. Lo snippet di codice per l'inizializzazione della vista di ricercacome disabilitare il collasso della vista di ricerca sul tasto indietro premuto android

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

Il codice sopra mostra la visualizzazione di ricerca estesa con query di ricerca predefinita. Il problema è quando premo il pulsante la vista di ricerca collassa nuovamente prima di tornare alla precedente attività in Android. Non voglio che la visualizzazione della ricerca crolli alla pressione del tasto indietro. Come impedire alla vista di ricerca di comprimere sul tasto indietro premere?

+0

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

+0

il post precedente è diverso dal mio pr oblema. La mia visualizzazione di ricerca viene compressa alla pressione del tasto indietro. Devo disabilitare questo comportamento predefinito. Non voglio che la vista di ricerca venga compressa, dovrebbe essere sempre espansa? qualche suggerimento ? – user1526671

+0

hai ricevuto una risposta per questo? –

risposta

0

aggiungere un valore booleano quando vista di ricerca è aperto come questo

private Boolean isSearchPageIsOpen = true; 

quindi aggiungere il anche di gestire di nuovo premere il pulsante

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

       do something here 
     } 
     return false; 
+1

search view indietro premere non chiama onKeydown Metodo overriden – user1526671

0

SearchView.setIconifiedByDefault(false) dovrebbe essere sufficiente se è stato impostato l'attributo android:showAsAction="always" in il tuo menu xml.

il seguente frammento funziona per me:

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> 

Attività

@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); 
} 
Problemi correlati