我有一个带有菜单项的操作栏。如何隐藏/显示菜单项?
这就是我想做的:
MenuItem item = (MenuItem) findViewById(R.id.addAction);
item.setVisible(false);
this.invalidateOptionsMenu();
我有一个带有菜单项的操作栏。如何隐藏/显示菜单项?
这就是我想做的:
MenuItem item = (MenuItem) findViewById(R.id.addAction);
item.setVisible(false);
this.invalidateOptionsMenu();
当前回答
Android kotlin,隐藏或设置操作栏中菜单项的可见性。
override fun onCreateOptionsMenu(menu: Menu): Boolean {
val inflater = menuInflater
inflater.inflate(R.menu.main_menu, menu)
val method = menu.findItem(R.id.menu_method)
method.isVisible = false //if want to show set true
return super.onCreateOptionsMenu(menu)
}
其他回答
P1r4nh4答案很好,我只是用一个布尔标志简化了它:
public int mState = 0; //at the top of the code
//where you want to trigger the hide action
mState = 1; // to hide or mState = 0; to show
invalidateOptionsMenu(); // now onCreateOptionsMenu(...) is called again
...
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// inflate menu from xml
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.settings, menu);
if (mState == 1) //1 is true, 0 is false
{
//hide only option 2
menu.getItem(2).setVisible(false);
}
}
这对我来说很管用;我希望它能帮助你:
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.my_menu_setting, menu);
for (int i = 0; i < menu.size(); i++){
if(menu.getItem(i).getItemId() == R.id.this_item_i_want_to_hide){
menu.getItem(i).setVisible(false);
}
}
return true;
}
我认为更好的方法是为菜单使用成员变量,在onCreateOptionsMenu()中初始化它,然后只使用setVisible(),而不使选项菜单无效。
试试这个:
MenuItem myitem = menu.findItem(R.id.my_item);
myitem.setVisible(false);
你可以调用它:
MenuItem item = menu.findItem(R.id.my_item);
item.setVisible(false);
更新:
确保您的代码不为item返回null,否则可能导致应用程序崩溃。