Android 動態控制OptionMenu的顯示與隱藏


 

在有些場景下,可能需要動態的顯示和隱藏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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM