21

sono in grado di espandere la visualizzazione di ricerca con l'azione come questoForza vista l'azione Bar mostra Ricerca

<item android:id="@+id/menu_search" 
      android:title="Search" 
      android:showAsAction="never|collapseActionView" 
      android:actionViewClass="android.widget.SearchView" /> 

ma ho un'attività 3-scheda e mi piacerebbe SearchView essere sempre ampliato Come posso fare quella?

risposta

61

Sono necessari due passaggi.

In primo luogo, è necessario assicurarsi che la voce del menu di ricerca sia sempre visualizzata come un'azione e mai spostata nel menu di overflow. Per raggiungere questo obiettivo impostare l'attributo della voce di menu di ricerca showAsAction a always:

<item 
    android:id="@+id/menu_search" 
    android:title="Search" 
    android:showAsAction="always" 
    android:actionViewClass="android.widget.SearchView" /> 

In secondo luogo, assicurarsi che la vista azione non è mostrata in iconificata (cioè compresso) la modalità di default. Per fare questa chiamata setIconifiedByDefault(false) sulla vostra ricerca istanza di vista:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.my_activity, menu); 

    MenuItem searchViewItem = menu.findItem(R.id.menu_search); 
    SearchView searchView = (SearchView) searchViewItem.getActionView(); 
    [...] 
    searchView.setIconifiedByDefault(false); 

    return true; 
} 

Che dovrebbe farlo.

+1

ottenere NPE su questa riga searchView.setIconifiedByDefault ho utilizzato questo codice SearchView searchView = (SearchView) menu.findItem (R.id.menu_search) .getActionView(); searchView.setIconifiedByDefault (false); – Erum

+0

Prova ad ottenere SearchView da MenuItemCompat.getActionView (menu.findItem (R.id.menu_search)) se stai usando AppCompat SearchView –