閱讀852 返回首頁    go 阿裏雲 go 技術社區[雲棲]


android menu 實現動態修改menu

 

   在一個android創建菜單menu時,需要重寫Activity的onCreateOptionsMenu(Menu menu)方法,這個方法隻在第一次創建的時候調用一次,所以如果之後想對menu進行動態的修改,那麼就不要再對onCreateOptionsMenu做什麼手腳了。

      於是就要用到onPrepareOptionsMenu(Menu menu)方法了。onPrepareOptionsMenu與onCreateOptionsMenu不同的是,他在每次按下menu硬鍵之前會被調用,所以可以在這裏動態的改變menu。如果需要創建一個全新的菜單,那麼可以在

public boolean onPrepareOptionsMenu(Menu menu) {
     super.onPrepareOptionsMenu(menu);
     menu.clear();
   
     cb=(CheckBox)findViewById(R.id.my_mms_item_checkbox);
   menu.add(0, MENU_01, 0, "新建短信").setIcon(R.drawable.menu_new_mms);
   Log.d(TAG,"cb.getVisibility():"+cb.getVisibility());
   if(cb.getVisibility()==View.GONE)
    menu.add(0, MENU_02, 0, "多選").setIcon(R.drawable.mms_multiple);
   else
   {
    menu.add(0, MENU_03, 0, "取消多選").setIcon(R.drawable.mms_multiple);
    menu.add(0, MENU_04, 0, "選擇全部").setIcon(R.drawable.mms_multiple);
   }
     return true;
  }

如果沒有clear而直接add的話,那麼菜單中菜單項是會“追加”的,這樣,隨著你不停的點menu鍵,菜單項就不停的增加。

 

另外,android係統默認的菜單樣式是支持最多3個一行,如果有4項就每行2個有2行...如果想自定義樣式,可以使用xml文件定義樣式。

 

最後更新:2017-04-02 06:51:58

  上一篇:go API Demos 2.3 學習筆記 (12)-- Views->Rating Bar
  下一篇:go java.util.ConcurrentModificationException異常 解決方法