2013-07-09 5 views
0

Je me demande comment faire: lorsque l'utilisateur appuie sur le bouton de recherche de matériel, il ouvre une vue de recherche dans la barre d'action.Manipulation de matériel de recherche pour afficher searchview dans ActionbarSherlock

Fondamentalement, j'ai une activité d'hébergement des fragments. Un fragment ajouter au ActionBarSherlock un SearchView, il fonctionne très bien:

@Override 
public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu, 
     MenuInflater inflater) { 

    if(searchView==null) 
     searchView = new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext()); 

    searchView.setQueryHint(getString(R.string.search)); 
    searchView.setOnQueryTextListener(this); 


     menu.add(Menu.NONE, R.string.search, Menu.NONE, R.string.search) 
     .setIcon(R.drawable.abs__ic_search_api_holo_light) 
     .setActionView(searchView) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 

    super.onCreateOptionsMenu(menu, inflater); 
} 

Je pense que je peux aussi attraper la clé matérielle dans le FragmentActivity avec

@Override 
public boolean onSearchRequested() { 

    //DO SOMETHING 

    return super.onSearchRequested(); 
} 

Mais je ne vois pas comment ouvrir la searchview lorsque le bouton de recherche de matériel est enfoncé.

Un conseil?

Merci :).

Répondre

1

Alors, voici comment j'utiliser la clé de recherche de matériel pour ouvrir le SearchView en le actionbar sherlock:

Dans mon SherlockFragmentActivity:

private Menu ABSMenu; 

@Override 

public boolean onCreateOptionsMenu(Menu menu) { 
    ABSMenu = menu; 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onSearchRequested() { 

    MenuItem mi = ABSMenu.findItem(R.string.search); // R.string.search is the id of the searchview 
    if(mi!=null){ 
    if(mi.isActionViewExpanded()) 
    { 
      mi.collapseActionView(); 
    }else 
    { 
      mi.expandActionView(); 
    } 
    } 

    return super.onSearchRequested(); 
} 
0

Vous pouvez étendre la vue de la recherche et de la réduire comme

searchView.setIconified(false); 
searchView.setIconified(true); 

De cette façon, vous pouvez programatically invoquer Affichage

+0

Merci pour votre aide, mais je ne pouvais pas l'utiliser pour réaliser ce que je voulais faire. – loudev

Questions connexes