我已经查看了有关堆栈溢出的问题,但无法找到解决方案。
@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布尔值设置为false。堆栈上的人说每次点击都会触发onPrepareOptionsMenu,但事实并非如此。 我能够在onclick功能上隐藏一个菜单项
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_settings:
Log.v("Log:","edit_item pressed");
return true;
}
}
但是我需要隐藏多个菜单项以及我想要显示的其他菜单项。 我怎么能这样做呢?
答案 0 :(得分:19)
它不足以改变isDown
变量。每次要更改可见性时,都必须调用setVisible()
方法。该方法不仅仅是设置一个布尔值,因此只需更改布尔值即可。
将isDown
值更改为false后,您需要拨打invalidateOptionsMenu()
,再次拨打onPrepareOptionsMenu()
即可重新启动该菜单。
尝试使用此代码使菜单项不可见:
...
isdown = false;
invalidateOptionsMenu();
...
答案 1 :(得分:11)
试试这个,
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);
答案 2 :(得分:0)
在FragmentActivity中尝试此操作
public boolean onPreparePanel(int featureId, View view, Menu menu) {
if(isLeftMenuOpened()) return false;
return super.onPreparePanel(featureId, view, menu);
}
方法FragmentActivity.onPreparePanel为所有附加的片段创建菜单。您必须返回true才能显示菜单;如果你返回false,它将不会显示。
答案 3 :(得分:0)
我有一个包含两个项目的菜单,第一个:保存项目,第二个:编辑项目。当我进入编辑时,我想要第一个"保存项目"已被隐藏,当我点击"编辑项目","保存项目"被展示了。
所以:
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());
最后它按照我的意愿运作。