2012-07-09 2 views
13

voglio fare una barra delle operazioni che assomiglia a questo:Android Azione Bar con la ricerca Visualizza

ActionBar

e io non sono in grado di farlo.

Ho provato ad usare la cosa del crollo descritta here, ma non è esattamente quello che voglio.

  • Prima di tutto SearchView non è visibile fino icona utente preme ricerca .. ma io voglio che sia visibile subito dopo l'attività inizia.
  • In secondo luogo dopo che SearchView appare tutte le altre icone di azione scompaiono .. Ma voglio che siano sempre visibili.
  • E funziona solo per Android 3 e versioni successive, lo voglio per Android 2 e versioni successive, quindi utilizzo ActionBarSherlock.

Ad esempio, la barra delle azioni in google maps è simile a quello che voglio.

Qualcuno può consigliarmi come ottenerlo?

+0

Qui è barra delle azioni mappe google che ho pensato [google maps] (http://vojtechbartos.com /mapyactionbar.png) –

+0

Quello che vuoi è aggiungere una vista personalizzata alla tua barra delle azioni. Rif. Api: http://developer.android.com/reference/android/app/ActionBar.html#setCustomView(int) E chiamarlo come: getActionbar.setCustomView (R.layout.mySearchbar); – andreasg

+2

Grazie! :) Ho fatto esattamente come hai detto .. Ho creato il layout search_bar.xml con un EditText in esso .. Quindi scrivo questo 'actionBar = getSupportActionBar(); actionBar.setCustomView (R.layout.search_bar); actionBar.setDisplayShowCustomEnabled (true); 'nel metodo onCreate in attività .. e funziona! Quindi ... ringrazi davvero l'uomo! :) –

risposta

6

Se si utilizza ActionBarSherlock si deve fare smth come questo

@Override 
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    menu.add(0, 1, 1, R.string.ac_refresh).setIcon(R.drawable.ic_navigation_refresh).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 2, 2, R.string.ac_settings).setIcon(R.drawable.ic_action_settings).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 3, 3, R.string.ac_favourite).setIcon(isFavouriteChannel(channel) ? R.drawable.ic_rating_important : R.drawable.ic_rating_not_important).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 4, 4, R.string.ac_search ).setIcon(R.drawable.ic_action_search).setActionView(R.layout.action_search) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 

    return super.onCreateOptionsMenu(menu); 
} 

Date un'occhiata a setActionView (R.layout.action_search) - questa è la sua opinione testo in file xml. Se si desidera che le altre icone di azioni siano sempre visualizzate, è necessario utilizzare MenuItem.SHOW_AS_ACTION_ALWAYS

+0

Impostalo su ** SEMPRE ** è un buon suggerimento, grazie :) –

14

ActionbarSherlock è una grande libreria. L'ultima versione (4.2.0) ha il metodo per rendere visibile la vista di ricerca quando l'attività inizia SearchView.setIconified (booleano);

Quindi, se si vuole fare la visualizzazione di ricerca sempre visibile si dovrebbe utilizzare il seguente codice:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 

    //Create the search view 
    SearchView searchView = new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext()); 
    searchView.setQueryHint("Search for countries…"); 
    searchView.setIconified(false); 

    menu.add("Search") 
      .setIcon(R.drawable.abs__ic_search) 
      .setActionView(searchView) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 


}