Android_三種菜單介紹

學(xué)習(xí)Android的同學(xué)注意了!?。?/b>

學(xué)習(xí)過(guò)程中遇到什么問(wèn)題或者想獲取學(xué)習(xí)資源的話,歡迎加入學(xué)習(xí)交流群,群號(hào)碼:364595326? 我們一起學(xué)Android!

Android的菜單分為三種類型:選項(xiàng)菜單(Option Menu)、上下文菜單(Context Menu)、子菜單(Sub Menu)

一.選項(xiàng)菜單

當(dāng)用戶單擊設(shè)備上的菜單按鈕(Menu),觸發(fā)事件彈出的菜單就是選項(xiàng)菜單。選項(xiàng)菜單最多只有六個(gè),超過(guò)六個(gè)第六個(gè)就會(huì)自動(dòng)顯示 更多 選項(xiàng)來(lái)展示顯示。

創(chuàng)建方法:

1、覆蓋Activity的onCreateOptionsMenu(Menu menu)方法,當(dāng)我們第一次打開菜單時(shí)調(diào)用。

2、調(diào)用Menu的add()方法添加菜單項(xiàng)(MenuItem),可以調(diào)用MenuItem的setIcon()方法為菜單項(xiàng)設(shè)置圖標(biāo)。

3、當(dāng)菜單項(xiàng)(MenuItem)被選中時(shí),覆蓋Acitivy的onOptionsMenuSelected()方法響應(yīng)事件。

二、上下文菜單

當(dāng)用戶長(zhǎng)按Activity頁(yè)面時(shí),彈出的菜單我們稱為上下文菜單。我們經(jīng)常在Windows中用鼠標(biāo)右鍵單擊彈出的菜單就是上下文菜單。

1、覆蓋Activity的onCreateContextMenu()方法,調(diào)用Menu的add方法添加菜單項(xiàng)MenuItem

2、覆蓋onContextItemSelected()方法,響應(yīng)菜單單擊事件

3、調(diào)用registerForContextMenu()方法,為視圖注冊(cè)上下文菜單

三、子菜單

子菜單就是將相同功能的分組進(jìn)行多級(jí)顯示的一種菜單,比如,Windows的“文件”菜單中就有“新建”,“打開”,“關(guān)閉”等子菜單。

創(chuàng)建子菜單的方法

1、覆蓋Activity的onCreateOptionsMenu()方法,調(diào)用Menu的addSubMenu()方法添加子菜單項(xiàng)

2、調(diào)用SubMenu的add()飯飯,添加子菜單項(xiàng)

3、覆蓋onCreateItemSelected()方法,響應(yīng)菜單單擊事件

[java]view plaincopy

publicclassMainextendsActivity?{

//?菜單項(xiàng)ID

//?FIRST為Menu類中的整形常量

privatestaticfinalintITEM1?=?Menu.FIRST;

privatestaticfinalintITEM2?=?Menu.FIRST?+1;

privatestaticfinalintITEM3?=?Menu.FIRST?+2;

privatestaticfinalintITEM4?=?Menu.FIRST?+3;

privatestaticfinalintITEM5?=?Menu.FIRST?+4;

privatestaticfinalintITEM6?=?Menu.FIRST?+5;

privatestaticfinalintITEM7?=?Menu.FIRST?+6;

TextView?myTV;

@Override

publicvoidonCreate(Bundle?savedInstanceState)?{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

myTV?=?(TextView)?findViewById(R.id.myTV);

//?此時(shí)為myTv設(shè)置上下文菜單,長(zhǎng)按TextView時(shí)響應(yīng)函數(shù)

registerForContextMenu(myTV);

}

@Override

//?點(diǎn)擊菜單按鈕響應(yīng)的事件

publicbooleanonCreateOptionsMenu(Menu?menu)?{

/*?一下代碼為選項(xiàng)菜單測(cè)試

//?添加菜單項(xiàng)

//?public?abstract?MenuItemadd(int?groupId,?int?itemId,?int?order,?CharSequence?title)

//?菜單所在的group,菜單的ID,排列順序,顯示的文字

//?add()方法返回一個(gè)MenuItem對(duì)象。而setIcon是MenuItem的方法

menu.add(0,?ITEM1,?0,?"開始").setIcon(R.drawable.ic_launcher);

menu.add(0,?ITEM2,?0,?"開始1");

menu.add(1,?ITEM3,?0,?"開始2");

menu.add(1,?ITEM4,?0,?"開始3");

menu.add(1,?ITEM5,?0,?"開始4");

//??menu.add(0,?ITEM6,?0,?"開始5");

//??menu.add(0,?ITEM7,?0,?"開始6");

*/

/**

*?以下代碼為添加子菜單的測(cè)試代碼

*/

//?添加子菜單

SubMenu?subFile?=?menu.addSubMenu("文件");

SubMenu?editFile?=?menu.addSubMenu("編輯");

//?為子菜單添加菜單項(xiàng)

subFile.add(0,?ITEM1,0,"新建");

subFile.add(0,?ITEM2,0,"打開");

returntrue;

}

@Override

//?菜單被選中時(shí)觸發(fā)的事件

publicbooleanonOptionsItemSelected(MenuItem?item)?{

/*?//?在此說(shuō)明一下,Menu相當(dāng)于一個(gè)容器,而MenuItem相當(dāng)于容器中容納的東西

switch(item.getItemId())?{

case?ITEM1:

//?設(shè)置Activity的Title

setTitle("開始游戲1");

break;

case?ITEM2:

setTitle("開始游戲2");

break;

case?ITEM3:

setTitle("開始游戲3");

break;

case?ITEM4:

setTitle("開始游戲4");

break;

case?ITEM5:

setTitle("開始游戲5");

break;

case?ITEM6:

setTitle("開始游戲6");

break;

case?ITEM7:

setTitle("開始游戲7");

break;

}

*/

/**

*?子菜單項(xiàng)響應(yīng)代碼

*/

switch(item.getItemId())?{

caseITEM1:

//?設(shè)置Activity的Title

setTitle("新建文件");

break;

caseITEM2:

setTitle("打開文件");

break;

}

returntrue;

}

@Override

//?創(chuàng)建上下文菜單

publicvoidonCreateContextMenu(ContextMenu?menu,?View?v,

ContextMenuInfo?menuInfo)?{

//?向上下文菜單中添加菜單項(xiàng)

//?注意此處的menu是ContextMenu

menu.add(0,?ITEM1,0,"紅色背景");

menu.add(0,?ITEM2,0,"綠色背景");

menu.add(1,?ITEM3,0,"白色背景");

}

@Override

publicbooleanonContextItemSelected(MenuItem?item)?{

switch(item.getItemId())?{

caseITEM1:

myTV.setBackgroundColor(Color.RED);

break;

caseITEM2:

myTV.setBackgroundColor(Color.GREEN);

break;

caseITEM3:

myTV.setBackgroundColor(Color.WHITE);

break;

}

returntrue;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容