Eng*_*uad 204
任何人都需要动态更改菜单的选项:
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);
}
Run Code Online (Sandbox Code Playgroud)
Imd*_*kar 31
menu.xml文件
<item
android:id="@+id/item1"
android:title="your Item">
</item>
Run Code Online (Sandbox Code Playgroud)
放入你的java文件
public void onPrepareOptionsMenu(Menu menu) {
menu.removeItem(R.id.item1);
}
Run Code Online (Sandbox Code Playgroud)
cor*_*ban 18
就像尼古拉所说的那样在onPrepareOptionsMenu()中做到了.
对于操作栏中的菜单项,您必须使菜单无效
activity.invalidateOptionsMenu();
这里有更详细的描述.当onPrepareOptionsMenu切换菜单项时,如何刷新ActionBar?
如果我必须更改选项菜单的内容,我会在onMenuOpened()期间执行它.这允许我在用户访问菜单的那一刻检查运行状态.
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;
}
Run Code Online (Sandbox Code Playgroud)
要禁用某些项目:
MenuItem item = menu.findItem(R.id.ID_ASSING_TO_THE_ITEM_IN_MENU_XML);
item.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105135 次 |
| 最近记录: |