android 自定义菜单开发,Android开发学习笔记:浅谈3大类菜单
在Android系統(tǒng)中,菜單可以分為三類:選項(xiàng)菜單(Option Menu),上下文菜單(Context Menu)以及子菜單(Sub Menu)。
一.選項(xiàng)菜單(Option Menu)
創(chuàng)建選項(xiàng)菜單的步驟:
1.覆蓋Activity的onCreateOptionMenu(Menu menu)方法,當(dāng)菜單第一次被打開時(shí)調(diào)用
2.調(diào)用Menu的add( )方法添加菜單項(xiàng)(MenuItem),同時(shí)可以調(diào)用MenuItem的setIcon( )方法來為菜單項(xiàng)設(shè)置圖標(biāo)
3.當(dāng)菜單項(xiàng)(MenuItem)被選擇時(shí),覆蓋Activity的onOptionsItemSelected(MenuItem item)來響應(yīng)事件
選項(xiàng)菜單的實(shí)例:
packagecom.android.menu.activity;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
publicclassOptionMenuActivityextendsActivity?{
//聲明菜單項(xiàng)常量
privatestaticfinalintITEM_1?=?Menu.FIRST;
privatestaticfinalintITEM_2?=?Menu.FIRST+1;
privatestaticfinalintITEM_3?=?Menu.FIRST+2;
publicvoidonCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//覆蓋onCreateOptionsMenu(Menu?menu)來添加菜單項(xiàng)
publicbooleanonCreateOptionsMenu(Menu?menu)?{
//android.R使用的是系統(tǒng)自帶的圖標(biāo)
menu.add(0,?ITEM_1,0,"開始").setIcon(android.R.drawable.ic_media_play);
menu.add(0,?ITEM_2,0,"幫助").setIcon(android.R.drawable.ic_menu_help);
menu.add(0,?ITEM_3,0,"退出").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
returntrue;
}
//覆蓋onOptionsItemSelected(MenuItem?item)來響應(yīng)菜單選項(xiàng)被單擊事件
publicbooleanonOptionsItemSelected(MenuItem?item)?{
switch(item.getItemId())?{
caseITEM_1:
setTitle("開始游戲!");
break;
caseITEM_2:
setTitle("查看幫助!");
break;
caseITEM_3:
setTitle("退出游戲!");
break;
}
returntrue;
}
}
效果圖:
二.上下文菜單(Context Menu)
創(chuàng)建上下文菜單的步驟:
1.覆蓋Activity的onCreateOptionMenu(Menu menu)方法,調(diào)用Menu的add( )方法添加菜單項(xiàng)(MenuItem).
2.覆蓋Activity的onOptionsItemSelected(MenuItem item)來響應(yīng)事件
3.調(diào)用registerForContextMenu( )方法來為視圖注冊(cè)上下文菜單
上下文菜單的實(shí)例(按住“測(cè)試Context Menu”2秒,就會(huì)出現(xiàn)上下文菜單):
packagecom.android.context.activity;
importandroid.app.Activity;
importandroid.graphics.Color;
importandroid.os.Bundle;
importandroid.view.ContextMenu;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.view.ContextMenu.ContextMenuInfo;
importandroid.widget.TextView;
publicclassContextMenuActivityextendsActivity?{
privatestaticfinalintITME_1?=?Menu.FIRST;
privatestaticfinalintITME_2?=?Menu.FIRST+1;
privatestaticfinalintITME_3?=?Menu.FIRST+2;
privateTextView?text;
publicvoidonCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text?=?(TextView)findViewById(R.id.TextView_1);
//調(diào)用registerForContextMenu()來注冊(cè)上下文菜單
registerForContextMenu(text);
}
@Override
publicvoidonCreateContextMenu(ContextMenu?menu,?View?v,
ContextMenuInfo?menuInfo)?{
menu.add(0,?ITME_1,0,"紅色背景");
menu.add(0,?ITME_2,0,"藍(lán)色背景");
menu.add(0,?ITME_3,0,"白色背景");
}
@Override
publicbooleanonContextItemSelected(MenuItem?item)?{
switch(item.getItemId())?{
caseITME_1:
//設(shè)置TextView的背景顏色
text.setBackgroundColor(Color.RED);
break;
caseITME_2:
text.setBackgroundColor(Color.BLUE);
break;
caseITME_3:
text.setBackgroundColor(Color.WHITE);
break;
}
returntrue;
}
}
效果圖:
三.子菜單(Sub Menu)
創(chuàng)建子菜單的步驟:
1.覆蓋Activity的onCreateOptionMenu(Menu menu)方法,調(diào)用Menu的addSubMenu( )方法來添加子菜單(Sub Menu)
2.調(diào)用SubMenu的add( )方法來添加子菜單(Sub Menu)
3.覆蓋onContextItemSelect( )方法來響應(yīng)菜單單擊事件
子菜單的實(shí)例:
packagecom.android.sub.activity;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.SubMenu;
publicclassSubMenuActivityextendsActivity?{
privatestaticfinalintITEM_1?=?Menu.FIRST;
privatestaticfinalintITEM_2?=?Menu.FIRST+1;
publicvoidonCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//覆蓋onCreateOptionsMenu(Menu?menu)方法,添加子菜單項(xiàng)
publicbooleanonCreateOptionsMenu(Menu?menu)?{
SubMenu?ad?=?menu.addSubMenu("添加").setIcon(android.R.drawable.ic_menu_add);
SubMenu?re?=?menu.addSubMenu("關(guān)閉").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
ad.add(0,?ITEM_1,0,"文件");
ad.add(0,?ITEM_2,0,"圖片");
returntrue;
}
//覆蓋onOptionsItemSelected(MenuItem?item),響應(yīng)菜單選項(xiàng)被單擊事件
publicbooleanonOptionsItemSelected(MenuItem?item)?{
switch(item.getItemId())?{
caseITEM_1:
setTitle("添加文件!");
break;
caseITEM_2:
setTitle("添加圖片!");
break;
}
returntrue;
}
}
效果圖:
注:menu.add的方法中的參數(shù):
1.int類型的group ID參數(shù),代表的是組概念,你可以將幾個(gè)菜單項(xiàng)歸為一組,以便更好的以組的方式管理你的菜單按鈕??梢杂玫降姆椒ㄓ?#xff1a;
removeGroup(id)
setGroupCheckable(id, checkable, exclusive)
setGroupEnabled(id,boolean enabled)
setGroupVisible(id,visible)
2.int類型的item ID參數(shù),代表的是項(xiàng)目編號(hào)。這個(gè)參數(shù)非常重要,一個(gè)item ID對(duì)應(yīng)一個(gè)Menu中的選項(xiàng)。在后面使用菜單的時(shí)候,就是靠這個(gè)item ID來判斷,你選中的是哪個(gè)選項(xiàng)。
3.int類型的order ID參數(shù),代表的是菜單項(xiàng)的顯示順序。默認(rèn)是0,表示菜單的顯示順序就是按照add的順序來顯示。
4.String類型的title參數(shù),表示選項(xiàng)中顯示的文字。
總結(jié)
以上是生活随笔為你收集整理的android 自定义菜单开发,Android开发学习笔记:浅谈3大类菜单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android最新框架,XUpdate
- 下一篇: android 设置对话框的高度,如何控