Est-il possible de modifier les éléments du menu d'options par programmation? Quelqu'un peut-il me donner un exemple s'il vous plaît? De plus, je veux désactiver certains éléments pour qu'ils n'écoutent pas les clics, est-ce possible?
Merci.
Est-il possible de modifier les éléments du menu d'options par programmation? Quelqu'un peut-il me donner un exemple s'il vous plaît? De plus, je veux désactiver certains éléments pour qu'ils n'écoutent pas les clics, est-ce possible?
Merci.
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);
}
Vous pouvez le faire dans onPrepareOptionsMenu () .
Si je dois modifier le contenu de mon menu d'options, je l'exécute pendant onMenuOpened (). Cela me permet de vérifier l'état de fonctionnement au moment même où l'utilisateur accède au menu.
public boolean onMenuOpened(int featureid, Menu menu)
{
menu.clear();
if (!editable)
{
MenuItem itemAdd = menu.add(0, REASSIGN, Menu.NONE, context.getString(R.string.reassign));
MenuItem itemMod = menu.add(1, EDIT, Menu.NONE, context.getString(R.string.modify));
MenuItem itemDel = menu.add(2, DELETE, Menu.NONE, context.getString(R.string.delete));
itemAdd.setShortcut('0', 'a');
itemMod.setShortcut('1', 'm');
itemDel.setShortcut('2', 'd');
}
else
{
MenuItem itemSave = menu.add(3, SAVE, Menu.NONE, context.getString(R.string.savechanges));
itemSave.setShortcut('0', 'S');
}
return true;
}
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.