子菜單是能夠顯示更加詳細(xì)信息的Android系統(tǒng)菜單子項(xiàng),如圖1所示。其中,菜單子項(xiàng)使用了浮動(dòng)窗體的顯示形式,能夠更好地適應(yīng)小屏幕的顯示方式。

圖1 菜單子項(xiàng)
Android系統(tǒng)的子菜單使用非常靈活,可以在選項(xiàng)菜單或快捷菜單中使用子菜單,有利于將相同或相似的菜單子項(xiàng)組織在一起,便于顯示和分類(lèi)。但是,子菜單不支持嵌套。
子菜單的添加使用addSubMenu()方法實(shí)現(xiàn),代碼如代碼清單1所示。
代碼清單1 onOptionsItemSelected()
SubMenu uploadMenu = (SubMenu) menu.addSubMenu
(0,MENU_UPLOAD,1,"上傳設(shè)置").setIcon(R.drawable.upload);
uploadMenu.setHeaderIcon(R.drawable.upload);
uploadMenu.setHeaderTitle("上傳參數(shù)設(shè)置");
uploadMenu.add(0,SUB_MENU_UPLOAD_A,0,"上傳參數(shù)A");
uploadMenu.add(0,SUB_MENU_UPLOAD_B,0,"上傳參數(shù)B");
第1行代碼在onCreateOptionsMenu()方法傳遞的menu對(duì)象上調(diào)用addSubMenu()方法,在選項(xiàng)菜單中添加一個(gè)菜單子項(xiàng),用戶(hù)單擊后可以打開(kāi)子菜單;addSubMenu()方法與選項(xiàng)菜單中使用過(guò)的add()方法支持相同的參數(shù),同樣可以指定菜單子項(xiàng)的ID、組ID和標(biāo)題等參數(shù),并且能夠通過(guò)setIcon()方法顯示菜單的圖標(biāo)。
第2行代碼使用setHeaderIcon ()方法,定義子菜單的圖標(biāo)。
第3行定義子菜單的標(biāo)題,若不規(guī)定子菜單的標(biāo)題,子菜單將顯示父菜單子項(xiàng)標(biāo)題,即第1行代碼中“上傳設(shè)置”。
第4行和第5行在子菜單中添加了兩個(gè)菜單子項(xiàng),菜單子項(xiàng)的更新方法和選擇事件處理方法,仍然使用onPrepareOptionsMenu()方法和onOptionsItemSelected ()方法。
以《Android系統(tǒng)菜單之選項(xiàng)菜單》文中的代碼為基礎(chǔ),將“上傳設(shè)置”改為子菜單,并在子菜單中添加“上傳參數(shù)A”和“上傳參數(shù)B”兩個(gè)菜單子項(xiàng)。運(yùn)行結(jié)果如圖2所示。

圖2 運(yùn)行效果圖