这是我用来删除MenuItem
的代码:
af.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
但是,setShowsAsAction
需要最低限度的API 11才能在GingerBread上崩溃。我可以使用af.setVisible(false);
来获取可以在GingerBread上运行的代码。两者有什么不同?它是一回事吗?
答案 0 :(得分:17)
使用v7支持库,如下所示:
MenuItem menuItem = menu.add(....);
MenuItemCompat.setShowAsAction(menuItem , MenuItemCompat.SHOW_AS_ACTION_NEVER);
答案 1 :(得分:1)
1. af.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
这将导致从ActionBar隐藏MenuItem。但是它会在OverFlow菜单中显示。
2. af.setVisible(false);
这将完全隐藏MenuItem与ActionBar和Overflow菜单。
答案 2 :(得分:1)
区别可能是您将showAsAction
设置为never
时,您仍可使用ActionBar
中的菜单硬件或溢出按钮访问您的菜单项,而使用设置visible
时方法,即使按菜单,也不会显示菜单项。
根据参考文献setVisible(boolean visible)
:
设置MenuItem的可见性。如果为true,则该项目将可见;如果为false则隐藏(在API 1中添加)
showAsAction
方法:
设置在存在操作栏(在API 11中添加)
时此项应显示的方式
正如您可以阅读的那样,主要区别是showAsAction="never"
与ActionBar
相关并隐藏在其上但仍显示在溢出菜单中,而setVisible
则因为API 1没有显示关心溢出菜单和ActionBar
:设置为false,它会隐藏您的菜单项。