1.在menu下新建一個(gè)xml menu文件
關(guān)于android:showAsAction屬性,這個(gè)屬性可以接收的屬性值有:--1--.alaways:這個(gè)值會(huì)使菜單項(xiàng)一直顯示在ActionBar上。--2--ifRoom:如果有足夠的空間,這個(gè)值會(huì)使菜單顯示在ActionBar上衣洁。--3--.never:這個(gè)值菜單永遠(yuǎn)不會(huì)出現(xiàn)在ActionBar是津坑。--4--.withText:這個(gè)值使菜單和它的圖標(biāo)修噪,菜單文本一起顯示愉择;
2.在activity中復(fù)寫onCreateOptionsMenu
這里需要做的是找到menu文件,也就是實(shí)例化一個(gè)menu對(duì)象巡李;
3.在activity中復(fù)寫onPrepareOptionsMenu
這里需要做的是找到每一個(gè)的menu的item項(xiàng)、跟前一步驟類似扶认。
4.在activity中復(fù)寫onOptionsItemSelected
既然有menu菜單侨拦,那肯定要有點(diǎn)擊事件拉,沒(méi)點(diǎn)擊事件那還有毛用蝠引,對(duì)吧阳谍,點(diǎn)擊事件就需要重寫onOptionsItemSelected,里面加一個(gè)switch螃概,里面case每個(gè)item的id就可以了矫夯,就這么簡(jiǎn)單。
題外:關(guān)于invalidateOptionsMenu()
invalidateOptionsMenu是動(dòng)態(tài)的改變menu菜單的item項(xiàng)的是否有效性吊洼,為在很多時(shí)候都需要用到训貌,例如讓menu項(xiàng)不能點(diǎn)擊。這個(gè)時(shí)候就要重寫invalidateOptionsMenu()在這個(gè)方法里面寫上控制item項(xiàng)的相關(guān)代碼,然后在調(diào)用這個(gè)方法递沪。
最后淺談下menu的執(zhí)行順序:
先調(diào)用onCreateOptionsMenu()豺鼻,然后在調(diào)用onPrepareOptionsMenu(),在每次用戶訪問(wèn)菜單的時(shí)候都調(diào)用onPrepareOptionsMenu()款慨,而不是調(diào)用onCreateOptionsMenu()儒飒,因?yàn)橐粋€(gè)activity就只有一個(gè)menu對(duì)象。如果調(diào)用了invalidateOptionsMenu()檩奠,那么當(dāng)用戶再次訪問(wèn)菜單的時(shí)候也會(huì)調(diào)用onPrepareOptionsMenu()桩了,而不會(huì)另外再創(chuàng)建。