如何通过单击事件以编程方式显示/隐藏操作栏项目
Posted
技术标签:
【中文标题】如何通过单击事件以编程方式显示/隐藏操作栏项目【英文标题】:How to Show/Hide Action Bar item programmatically via Click Event 【发布时间】:2016-09-29 07:42:32 【问题描述】:默认情况下,我使用以下代码将可见性设置为 false。
@Override
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_items, menu);
menu.findItem(R.id.action_share).setVisible(false);
return true;
现在,当用户单击我的活动中的按钮时,如何使其再次可见。
【问题讨论】:
【参考方案1】:在您的 onCreateOptionsMenu 中:
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_items, menu);
if (hideIcon)
menu.findItem(R.id.action_share).setVisible(false);
else
menu.findItem(R.id.action_share).setVisible(true);
return true;
在要显示/隐藏图标的方法中,只需将布尔 hideIcon 设置为 true 或 false 并调用:
invalidateOptionsMenu();
刷新菜单。
【讨论】:
【参考方案2】:获取该菜单项的实例,您可以每次设置其项可见性。
Menu mMenu;
@Override
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_items, menu);
mMenu = menu;
mMenu.findItem(R.id.action_share).setVisible(false);
return true;
//somewhere else
mMenu.findItem(R.id.action_share).setVisible(true);
并基于@chol 接听电话invalidateOptionsMenu();
【讨论】:
【参考方案3】:虽然你可以创建一个类字段
private Menu menu;
并在 onCreateOptionsMenu() 中获取其值
this.menu = menu;
然后在clickListener中编写代码
this.menu.findItem(R.id.action_share).setVisible(true);
【讨论】:
以上是关于如何通过单击事件以编程方式显示/隐藏操作栏项目的主要内容,如果未能解决你的问题,请参考以下文章