天天看點

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檔案定義樣式。

繼續閱讀