Android之Menu

來源:互聯網
上載者:User

android提供了三種菜單類型,分別為options menu,context menu,sub menu。

options menu就是通過按home鍵來顯示,context menu需要在view上按上2s後顯示。這兩種menu都有可以加入子功能表,子功能表不能種不能嵌套子功能表。options menu最多隻能在螢幕最下面顯示6個菜單選項,稱為icon menu,icon menu不能有checkable選項。多於6的功能表項目會以more icon menu來調出,稱為expanded menu。options menu通過activity的onCreateOptionsMenu來產生,這個函數只會在menu第一次產生時調用。任何想改變options menu的想法只能在onPrepareOptionsMenu來實現,這個函數會在menu顯示前調用。onOptionsItemSelected 用來處理選中的功能表項目。

context menu是跟某個具體的view綁定在一起,在activity種用registerForContextMenu來為某個view註冊context menu。context menu在顯示前都會調用onCreateContextMenu來產生menu。onContextItemSelected用來處理選中的功能表項目。

android還提供了對功能表項目進行分組的功能,可以把相似功能的功能表項目分成同一個組,這樣就可以通過調用setGroupCheckable,setGroupEnabled,setGroupVisible來設定菜單屬性,而無須單獨設定。

 

產生動態菜單android.view.Menu.addIntentOptions(int groupId,int itemId,int order,ComponentName caller, Intent[] specifics, Intent intent,int flags,MenuItem[] outSpecificItems)

Specifics  以action+uri的具體方式來增加啟用相應activity的功能表項目

Intent      以categroy+uri這種一般形式來增加啟用相應activity的功能表項目

參數Intent和Specifics的區別是,一個用categroy+uri來匹配activity,一個用action+uri來匹配activity。

//按Action尋找

Intent[] specifics = new Intent[1];

specifics[0] = new Intent(Intent.ACTION_EDIT, uri);

//按Category尋找,Action設為null

Intent intent = new Intent(null, uri);

intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

MenuItem[] items = new MenuItem[1];

menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, null, specifics, intent, 0, items);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.