7 votes

Android - garder le menu des options ouvert

J'ai mis en place un menu Options dans mon application Android et j'ai modifié les méthodes onCreateOptionsMenu, onOptionsItemSelected et onPrepareOptionsMenu pour personnaliser un peu le menu.

Ma question porte sur le maintien du menu Options ouvert après que l'utilisateur a cliqué sur un élément de menu. En gros, j'aimerais pouvoir masquer le menu jusqu'à ce que l'utilisateur clique sur la touche de menu de l'appareil. Une fois que l'utilisateur a cliqué sur cette touche, j'aimerais pouvoir maintenir le menu en place, quel que soit le nombre de fois que l'utilisateur clique sur les éléments du menu. Si l'utilisateur souhaite masquer le menu Options, il lui suffit de cliquer à nouveau sur la touche de menu de l'appareil.

Ce type d'interaction est-il soutenu (ou même conseillé) ? Si cette interaction n'est pas supportée, toute suggestion alternative est la bienvenue.

A la vôtre !

Sean

6voto

Patrick Boos Points 2916

Cela ne sera pas possible avec onCreateOptionsMenu et les autres méthodes. Elles agissent toujours de cette manière.

Mais vous pouvez le faire d'une autre manière. Mais là, vous devez programmer tout le menu vous-même. Il suffit d'ajouter le menu dans votre layout.xml et de le laisser caché (visibility = gone). Puis vous écrasez les méthodes onKeyDown. Là, vous vérifiez s'il s'agit de la touche Menu. Si le menu n'est pas encore ouvert, oui, alors vous affichez le menu. S'il est déjà ouvert, vous le cachez.

ne devrait pas être trop difficile. L'avantage, c'est que vous pouvez donner au menu l'aspect que vous souhaitez et le laisser réagir comme vous le souhaitez.

4voto

z17 Points 53

Pour toute personne qui, comme moi, a trouvé cette question dans Google :

Pour garder le menu ouvert après avoir sélectionné un élément, vous avez besoin de ce code :

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    item.setChecked(!item.isChecked());

    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
    item.setActionView(new View(this));
    item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            return false;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            return false;
        }
    });
    return false;
}

Important pour le retour false en onOptionsItemSelected et les méthodes de OnActionExpandListener

Cette solution de @MayurGajra. Plus de détails ici : Comment maintenir le menu de débordement après l'avoir cliqué? ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X