2014-03-24 71 views
2

這是我用來去除代碼MenuItemsetShowsAsAction不工作低於API 11

af.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); 

然而,setShowsAsAction需要的最低API 11,它崩潰的薑餅。我可以使用af.setVisible(false);來讓代碼在GingerBread上工作。兩者有什麼區別?這是一回事嗎?

回答

17

使用V7支持庫如下:

MenuItem menuItem = menu.add(....); 
MenuItemCompat.setShowAsAction(menuItem , MenuItemCompat.SHOW_AS_ACTION_NEVER); 
1
1. af.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); 

這將導致該菜單項被隱藏來回動作條。但它會在OverFlow菜單中顯示。

2. af.setVisible(false); 

這將隱藏MenuItem完全從ActionBar和溢出菜單以及。

1

的區別可能是,當你設置showAsActionnever,您的菜單項仍與菜單的硬件或溢出按鈕ActionBar,而當您使用設置visible方法可以訪問時,不顯示你的菜單項,即使按菜單。

據參考,setVisible(boolean visible)

設置菜單項的可見性。如果爲真,該項目將可見;否則爲false隱藏(在API 1加)

而且showAsAction方法:

如何設定此項目應在操作欄的存在(在API 11加)

顯示

正如你所看到的,最主要的區別是showAsAction="never"ActionBar有關並隱藏在它上面,但仍然在溢出菜單中顯示,而setVisible因爲API 1不關心溢出菜單和ActionBar:設置爲false,它隱藏你的菜單項。

相關問題