如图,需要做到menu按钮在编辑模式中隐藏:
网上查了很久,基本都是说在onCreateOptionsMenu()方法中用menuItem.setVisible(false);来隐藏菜单。
实际上这个方法隐藏的是菜单中具体的某一项,例如:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_toolbar, menu);
MenuItem menuItem = menu.findItem(R.id.action_edit);
if (editStatus){
menuItem.setVisible(false);
}else {
menuItem.setVisible(true);
}
return true;
}
要隐藏整个menu按钮及其内部的选项则要用Menu.setGroupVisible(int,boolean)方法,因为toolbar的菜单是以菜单组来分的,int参数是指第几个菜单组,boolean参数指是否隐藏该菜单组的所有菜单。上图中只有一个菜单组,所以int参数为0,代码如下:
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.toolbar_places,menu);
if (editStatus){
menu.setGroupVisible(0,false);
}else {
menu.setGroupVisible(0,true);
}
return true;
}
另外,menu还有另几个方法如下:
menu.setGroupCheckable():菜单组内的菜单是否都可选。
menu.setGroupEnabled():菜单组的菜单是否有用。