在有些場景下,可能需要動態的顯示和隱藏optionmenu,可以這樣實現:
如果在activity中默認實現了方法:
onCreateOptionsMenu(Menu menu)
那么該OptionMenu在打開activity時就會顯示
如果我們要默認隱藏該OptionMenu,就可以這樣實現:
activity中有這樣一個方法:
public boolean onPrepareOptionsMenu(Menu menu)
該方法在顯示OptionMenu前會被調用,所以我們可以這樣實現
1 public boolean onPrepareOptionsMenu(Menu menu){ 2 for (int i = 0; i < menu.size(); i++){ 3 menu.getItem(i).setVisible(false); 4 menu.getItem(i).setEnabled(false); 5 } 6 return super.onPrepareOptionsMenu(menu); 7 }
如果我們需要再顯示呢,很明顯,我們無法再觸發onPrepareOptionsMenu的調用
所以我們需要設置兩個全局變量:
1 private boolean optionMenuOn = false; //標示是否要顯示optionmenu 2 private Menu aMenu; //獲取optionmenu
新建一個函數來決定是否顯示optionmenu
1 private void checkOptionMenu(){ 2 if(null != aMenu){ 3 if(optionMenuOn){ 4 for (int i = 0; i < aMenu.size(); i++){ 5 aMenu.getItem(i).setVisible(true); 6 aMenu.getItem(i).setEnabled(true); 7 } 8 }else{ 9 for (int i = 0; i < aMenu.size(); i++){ 10 aMenu.getItem(i).setVisible(false); 11 aMenu.getItem(i).setEnabled(false); 12 } 13 } 14 } 15 }
首先我們需要aMenu賦值,然后在調用checkOptionMenu()方法,那么我們可以在onPrepareOptionsMenu中這樣實現
1 public boolean onPrepareOptionsMenu(Menu menu){ 2 aMenu = menu 3 checkOptionMenu(); 4 return super.onPrepareOptionsMenu(menu); 5 }
如果我們需要再顯示OptionMenu,比如點擊按鈕事件中,可以設置
optionMenuOn = true
然后調用
checkOptionMenu()
即可顯示OptionMenu。
轉自:http://www.jianshu.com/p/000f31af06b5