Comment ajouter des actions à la partie supérieure d'un ActionBar fractionné

Si un Android ActionBar est divisé en une partie supérieure et une partie inférieure en utilisant android:uiOptions="splitActionBarWhenNarrow" dans Manifext.xml , existe-t-il un moyen de forcer certaines des actions à afficher dans la partie supérieure au lieu de les avoir toutes au le fond?

3 Solutions collect form web for “Comment ajouter des actions à la partie supérieure d'un ActionBar fractionné”

Oui! Vous pouvez continuer à utiliser android:uiOptions="splitActionBarWhenNarrow" dans votre Manifest.xml.

Vous devez également définir:

 // set the actionbar to use the custom view getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); //set the custom view to use getActionBar().setCustomView(R.layout.custom_action_bar_top); 

R.layout.custom_action_bar_top serait une vue qui contient tous les boutons que vous souhaitez apparaître dans la barre d'action supérieure.

Tous les éléments de menu que vous voulez en bas doivent être ajoutés comme d'habitude dans la méthode onCreateOptionsMenu de votre activité.

Il n'y a pas de moyen standard de faire cela. Cela dit, la vue personnalisée de la barre d'action apparaîtra dans la barre supérieure, de sorte que vous pouvez simplement l'utiliser. Vous allez perdre certains extras (toasts sur une longue presse), donc vous devrez les mettre en œuvre vous-même. Cela dit, vous utilisez ActionBarSherlock, toutes les mises en page et les styles pour un bouton normal sont là, vous pouvez donc les utiliser.

J'aimerais donner une deuxième solution à Dylan Watson, mais avec une amélioration. Pour ceux qui souhaitent garder le titre et ne pas remplacer l'ensemble de l'actionBar par leur nouvelle vue, ils utilisent getActionBar().setDisplayShowCustomEnabled(true) , plutôt que getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); , Car ce dernier provoquera la nouvelle vue d'être la seule vue affichée dans la barre d'action. Mon code:

 @Override public boolean onCreateOptionsMenu(Menu menu) { SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = new SearchView(this); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); getActionBar().setDisplayShowCustomEnabled(true); getActionBar().setCustomView(searchView, new ActionBar.LayoutParams(Gravity.RIGHT)); getMenuInflater().inflate(R.menu.main, menu); return true; } 
coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.