這是我用來去除代碼MenuItem
:setShowsAsAction不工作低於API 11
af.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
然而,setShowsAsAction
需要的最低API 11,它崩潰的薑餅。我可以使用af.setVisible(false);
來讓代碼在GingerBread上工作。兩者有什麼區別?這是一回事嗎?
這是我用來去除代碼MenuItem
:setShowsAsAction不工作低於API 11
af.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
然而,setShowsAsAction
需要的最低API 11,它崩潰的薑餅。我可以使用af.setVisible(false);
來讓代碼在GingerBread上工作。兩者有什麼區別?這是一回事嗎?
使用V7支持庫如下:
MenuItem menuItem = menu.add(....);
MenuItemCompat.setShowAsAction(menuItem , MenuItemCompat.SHOW_AS_ACTION_NEVER);
1. af.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
這將導致該菜單項被隱藏來回動作條。但它會在OverFlow菜單中顯示。
2. af.setVisible(false);
這將隱藏MenuItem完全從ActionBar和溢出菜單以及。
的區別可能是,當你設置showAsAction
到never
,您的菜單項仍與菜單的硬件或溢出按鈕ActionBar
,而當您使用設置visible
方法可以訪問時,不顯示你的菜單項,即使按菜單。
據參考,setVisible(boolean visible)
:
設置菜單項的可見性。如果爲真,該項目將可見;否則爲false隱藏(在API 1加)
而且showAsAction
方法:
顯示如何設定此項目應在操作欄的存在(在API 11加)
正如你所看到的,最主要的區別是showAsAction="never"
與ActionBar
有關並隱藏在它上面,但仍然在溢出菜單中顯示,而setVisible
因爲API 1不關心溢出菜單和ActionBar
:設置爲false,它隱藏你的菜單項。