我已经通过对栈溢出的问题看起来并不能找到解决方案。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.themenu, menu);
MenuItem item = menu.findItem(R.id.menu_settings);
MenuItem item2 = menu.findItem(R.id.menu_save);
item.setVisible(isdown);
item2.setVisible(isdown);
return true;
}
这台我的菜单项,可见(ITEM1和ITEM2)。 的onclick工作正常
public void inflateTextarea() {
if(isdown == true) {
isdown = false;
LinearLayout tl = (LinearLayout)findViewById(R.id.content);
tl.setVisibility(View.VISIBLE);
ScaleAnimation scale = new ScaleAnimation(1, 1, 0, 1);
scale.setFillAfter(true);
scale.setDuration(500);
tl.startAnimation(scale);
}
}
然后这台我isdown布尔假。 堆栈人说onPrepareOptionsMenu应该火每次我点击,但这情况并非如此。 我能够隐藏的onclick功能一个菜单项
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_settings:
Log.v("Log:","edit_item pressed");
return true;
}
}
但我有我需要隐瞒,我想显示多个菜单项等。 我怎么能去呢?
它不足以改变isDown
变量。 你必须调用setVisible()
要更改的知名度每次方法。 这种方法并不仅仅是设置一个布尔值,所以只是改变一个布尔值,不会做更多。
变更后的isDown
值为false,你需要调用invalidateOptionsMenu()
调用,这将重新启动菜单onPrepareOptionsMenu()
一次。
试试这个代码使项目unvisible菜单:
...
isdown = false;
invalidateOptionsMenu();
...
试试这个,
private Menu menu=null;
@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater)
{
inflater.inflate(R.menu.note_menu, menu);
this.menu=menu;
super.onCreateOptionsMenu(menu,inflater);
menu.findItem(R.id.menuChartNoteEdit).setVisible(isdown);
menu.findItem(R.id.menuChartOpenNote).setVisible(isdown);
}
如果你想在任何地方隐藏菜单,执行后onCreateOptionsMenu()
则只是改变价值isdown
重复此代码,
menu.findItem(R.id.menu_settings).setVisible(isdown);
menu.findItem(R.id.menu_save).setVisible(isdown);
在FragmentActivity试试这个
public boolean onPreparePanel(int featureId, View view, Menu menu) {
if(isLeftMenuOpened()) return false;
return super.onPreparePanel(featureId, view, menu);
}
方法FragmentActivity.onPreparePanel创建所有连接的片段菜单。 要显示菜单,您必须返回true; 如果返回false也不会显示。
我有两个项目的菜单,第一:保存项目,第二:编辑项目。 我想,当我来到中进行编辑,先在“保存项目”已被隐藏,当我点击“编辑项目”,“保存项目”被证明。
所以:
- 在公开声明中的项目
- 在设定值,它
onCreateOptionsMenu(Menu menu, MenuInflater inflater)
- 设置能见度
isHidden()
- 然后每一个地方,我想,设置能见度
isVisible()
公共区域:
MenuItem saveItem;
onCreateOptionsMenu:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_detail_products, menu);
saveItem = (MenuItem) menu.findItem(R.id.action_detail_product_save);
saveItem.setVisible(isHidden());
}
,我想:
saveItem.setVisible(isVisible());
最后,它的工作原理是我想要的。