61 votes

Est-il possible d’afficher des icônes dans un PopupMenu ?

J’aime beaucoup le nouveau PopupMenu que nous avons obtenu en 3.0, mais je ne peux tout simplement pas afficher d’icônes à côté des éléments de menu. Je gonfle le menu de la .xml ci-dessous:

Avec ce code :

Je n’arrive pas à faire apparaître les icônes, est-ce qu’il me manque quelque chose ?

74voto

dgtale Points 756

Contribution à la solution fournie par Gaelan Bolger. Utilisez ce code si vous obtenez une « IllegalAccessException: accès au champ non autorisé ».

SMS

34voto

Robert Points 141

Si vous êtes prêt à être un peu aventureux, regardez le code source de Google pour PopupMenu. Créez votre propre classe, c’est-à-dire MyPopupMenu qui est la même que la classe PopupMenu de Google, mais apportez un léger changement.

Dans le constructeur de PopupMenu :

utilisez la méthode setForceShowIcon pour le forcer à afficher l’icône. Vous pouvez également simplement exposer une méthode publique pour définir cet indicateur en fonction de vos besoins.

21voto

Nous pouvons utiliser un modèle de sous-menu. Donc, nous n’avons pas besoin d’écrire la méthode pour afficher le menu contextuel, il s’affichera automatiquement. Jetez un coup d’œil :

menu.xml

dans MainActivity.java

Le résultat est :

Result

20voto

GaBo Points 217

J’ai pu montrer les icônes en utilisant la réflexion. Ce n’est peut-être pas la solution la plus élégante, mais elle fonctionne.

14voto

Mao Points 1035

avant d’utiliser la méthode popup.show(),créez une instance MenuPopupHelper et appelez la méthode setForceShowIcon(true),comme ceci

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