Est-il possible de modifier les éléments du menu d'options par programme? Quelqu'un peut-il me donner un exemple s'il vous plaît?
De plus, je souhaite désactiver certains éléments, pour qu'ils n'écoutent pas les clics, est-ce possible?
Pour quiconque a besoin de changer les options du menu de manière dynamique:
private Menu menu;
// ...
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
this.menu = menu;
getMenuInflater().inflate(R.menu.options, menu);
return true;
}
// ...
private void hideOption(int id)
{
MenuItem item = menu.findItem(id);
item.setVisible(false);
}
private void showOption(int id)
{
MenuItem item = menu.findItem(id);
item.setVisible(true);
}
private void setOptionTitle(int id, String title)
{
MenuItem item = menu.findItem(id);
item.setTitle(title);
}
private void setOptionIcon(int id, int iconRes)
{
MenuItem item = menu.findItem(id);
item.setIcon(iconRes);
}
menu
a été défini avant d'essayer d'en sortirMenuItem
. Par exemple, si vous avez quelque chose commeactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)
, les onglets sont chargés avant le menu, donc l'appel dehideOption
/showOption
withinonTabSelected
entraîne une exception de pointeur nul.item.setVisible(false);
, l'élément n'est masqué que lorsque je clique sur le menu lui-même. Si j'utiliseinvalidateOptionsMenu();
l'élément, ne répondez pas au clic. J'apprécie si vous pouviez m'aider sur un problème similaire auquel je suis confronté. stackoverflow.com/questions/54756799/…setVisible
états que vous devez également appelersetEnabled(false)
sinon l'élément peut toujours être invoqué via son raccourcimenu.xml
mettez votre fichier java
la source
Comme Nikolay l'a dit, faites cela dans onPrepareOptionsMenu ().
Pour les éléments de menu dans la barre d'actions, vous devez invalider le menu avec
activity.invalidateOptionsMenu();
Ceci est décrit plus en détail ici. Comment puis-je actualiser l'ActionBar lorsque onPrepareOptionsMenu a changé d'entrées de menu?
la source
Si je dois changer le contenu de mon menu d'options, je l'exécute pendant le onMenuOpened (). Cela me permet de vérifier l'état de fonctionnement au moment même où l'utilisateur accède au menu.
la source
Pour désactiver certains éléments:
la source
item.setVisible(false);
, mon élément n'est masqué que lorsque je clique sur le menu lui-même (trois points). Si j'utiliseinvalidateOptionsMenu();
certains éléments, je ne réponds pas au clic. J'apprécie si vous pouviez m'aider sur un problème similaire auquel je suis confronté. stackoverflow.com/questions/54756799/…en utilisant les lignes suivantes que j'ai faites pour ajouter les valeurs dans le menu
essayez ce travail comme un charme pour moi.
la source
Essayez ce code:
la source
invalidateOptionsMenu();
, mes éléments toujours visibles cessent de fonctionner (je veux dire que les éléments ne répondent pas au clic). J'apprécie si vous pouviez m'aider sur un problème similaire auquel je suis confronté. stackoverflow.com/questions/54756799/…Vous pouvez faire quelque chose de simple comme moi. Changez simplement le texte selon ce qui est nécessaire lorsque vous appuyez sur l'élément de menu. J'avais besoin d'éteindre et d'allumer le son, plus la possibilité d'effectuer une action en le touchant. Voici mon code:
audioOn et touchOn sont des booléens vérifiés dans d'autres parties du code. J'espère que cela t'aides.
la source
vous pouvez accomplir votre tâche simplement en mettant en œuvre comme ci-dessous:
la source
Dans le cas où vous avez un BottomBar:
Ensuite, il vous suffit d'appeler:
la source
Code Kotlin pour accéder aux options de la barre d'outils par programme et modifier le texte / l'icône, ..:
1-Nous avons notre élément de menu dans le fichier des éléments de menu comme: menu.xml, exemple de code pour cela:
2- Définissez une variable pour accéder à l'objet menu en classe:
3- paraphez-le dans onCreateOptionsMenu:
4- Accédez aux éléments de menu dans votre code ou amusez-vous:
la source
la source