setShowsAsAction在API 11下无法运行

时间:2014-03-24 14:30:04

标签: android android-menu

这是我用来删除MenuItem的代码:

af.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

但是,setShowsAsAction需要最低限度的API 11才能在GingerBread上崩溃。我可以使用af.setVisible(false);来获取可以在GingerBread上运行的代码。两者有什么不同?它是一回事吗?

3 个答案:

答案 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,它会隐藏您的菜单项。