Comment modifier la position des éléments de menu sur actionbar
Je voudrais développer une application dans laquelle j'ai du ajouter une mise en page personnalisée sur actionbar. Ajout de la mise en page personnalisée est faite, mais quand je suis en ajoutant les éléments de menu sur actionbar ma mise en page personnalisée change la position de la droite de l'actionbar au centre de l'actionbar. Ci-dessous est l'image de ce que j'ai réalisé jusqu'à présent.
Je veux quelque chose de ce genre sur l'actionbar.
Mise en page personnalisée(bouton jaune) à la droite de la majeure partie de actionbar et des éléments de menu dans le milieu.
Ajouter mon code pour réaliser cette mise en page personnalisée à l'aide de native android actionbar:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
cView = getLayoutInflater().inflate(R.layout.header, null);
actionBar.setCustomView(cView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.websearch_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
default:
return super.onOptionsItemSelected(item);
}
}
Comment cela peut-il être atteint?
De l'aide sera appréciée.
OriginalL'auteur Anupam | 2013-04-18
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous êtes le réglage de votre affichage personnalisé comme un affichage personnalisé dans la barre d'action. Si vous utilisez ActionbarSherlock vous pouvez ajouter l'affichage personnalisé comme un élément de menu et définir une action vue à l'aide de
.setActionView(yourCustomView or yourCustomLayoutId)
. Vous pouvez ensuite définir.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
pour afficher la vue. Assurez-vous que votre vue personnalisée est définie à la largeurwrap_content
ou sinon il va pousser les autres éléments de menu de l'écran. Cela peut aussi fonctionner sans ActionbarSherlock, mais je n'ai pas essayé encore là.EDIT: Essayez de modifier vos
onCreateOptionsMenu
méthodeet supprimer à partir de votre méthode onCreate
EDIT:
Si vous avez besoin de faire référence à la vue de votre mise en page personnalisée, vous pouvez le faire dans votre
onCreateOptionsMenu
méthode comme suit (note: j'ai écrit ce code dans le navigateur, donc pas de garantie que je n'ai pas fait une faute de frappe ou de quelque chose):J'ai ajouté le code comment faire cela avec ActionbarSherlock, j'espère que c'est la même chose avec la valeur par défaut Actionbar
Vous bercé mec. Merci beaucoup, tu m'as sauvé de créer une mise en page personnalisée, puis en le gonflant à l'actionbar. Merci!
vous êtes les bienvenus 😉
Comment peut-il changer l'ordre des éléments sur l'actionBar exactement? Je ne comprends pas.
OriginalL'auteur Thrakbad
Suffit d'utiliser
orderInCategory
dans votre fichier xml, et il sera de l'ordre de moins de nombre de plus (de gauche de votre barre d'action). Tels que:Même si, Actualiser élément vient en premier dans le fichier xml, il ne sera pas premier. Mais de Recherche icône de gauche à droite dans votre barre d'action sera d'abord en fonction de ses orderInCategory attribut.
OriginalL'auteur Rashid
L'ordre des éléments du menu sera définie en fonction de leur ordre dans le fichier XML qu'ils sont gonflés.
Donc tout ce que vous devez faire est de modifier l'ordre dans le fichier XML que vous le souhaitez.
OriginalL'auteur oznus
Une façon d'y parvenir est par l'appel de invalidateOptionMenu et dans le onCreateOptionsMenu méthode, mettre les éléments selon l'ordre que vous souhaitez les mettre.
BTW, si vous utilisez ActionBarSherlock, cette méthode est disponible , donc ignorer la fibre de mises en garde à ce sujet.
Oui, partout où vous voulez changer l'ordre des éléments, de sauvegarder la configuration de l'ordre des éléments, et de les appeler invalidateOptionMenu() . Puis , dans la onCreateOptionsMenu() la méthode, vérifiez les configurations que vous avez stockées, et à l'aide d'une boucle, d'aller sur tous les articles que vous souhaitez insérer par leur ordre , et les ajouter au menu, un par un, de façon dynamique. Vous devriez le faire en accédant au "menu" de la variable de onCreateOptionsMenu(). Si vous souhaitez contenir "statique" de l'action des éléments à l'aide de gonfler, c'est ok, il suffit de trouver exactement où mettre le reste à l'intérieur du menu lui-même.
OriginalL'auteur android developer