2013-05-21 17 views
8

Sto usando searchview nella mia applicazione (senza barra delle azioni). Come posso comprimere searchview dopo l'invio del testo della query?android - chiudi searchview after submit

Ho questi ascoltatori;

 @Override 
     public boolean onQueryTextSubmit(String query) { 

      InputMethodManager imm = (InputMethodManager)thisFr.getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(globalSearch.getWindowToken(), 0); 

      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      // TODO Auto-generated method stub 
      return false; 
     } 

Non uso ActionBar quindi non ho una funzione come collapseActionView().

in attesa di aiuto

Grazie

+0

Probabilmente è possibile chiamare .setVisibility (View.GONE) nella visualizzazione di ricerca - oppure esiste un motivo per cui non è possibile farlo? – Cornholio

+0

Io secondo Cornholio per quello, con un'animazione puoi ottenere un bel collasso –

+0

Grazie per i commenti. Ma se si impostaVisibility su GONE, anche l'icona di ricerca sarà invisibile. non è vero? Voglio iconizzare la vista di ricerca. – dracula

risposta

13

Si può fare in questo modo nella vostra attività, testata con ActionBarSherlock (che nasconde anche la tastiera, assicurarsi di restituire false in onQueryTextSubmit):

private MenuItem searchMenuItem; 

public MenuItem getSearchMenuItem() { 
    return searchMenuItem; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // ... 
    searchMenuItem = menu.findItem(R.id.menu_search); 
    // ... 
    searchView.setOnQueryTextListener(new OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      MenuItem searchMenuItem = getSearchMenuItem(); 
      if (searchMenuItem != null) { 
       searchMenuItem.collapseActionView(); 
      } 
      return false; 
     } 
     @Override 
     public boolean onQueryTextChange(String newText) { 
      // ... 
      return true; 
     } 
    }); 
    // ... 
    return super.onCreateOptionsMenu(menu); 
} 
+0

Solo una nota: questo non comprimerà SearchView se invece viene selezionato un suggerimento. Per questo è necessario OnSuggestionListener. – kupsef

2

Se si utilizza SearchView nel menu Opzioni, è possibile chiamare invalidateOptionsMenu()

9

è necessario chiamare setIconified (true) t per davvero collassare la tua vista di ricerca, con il testo della prima chiamata viene cancellato con la seconda tastiera della chiamata e la visualizzazione della ricerca viene chiusa.

1
//close suggestion list on query text submit 
searchView.setIconified(true);