android 自定义菜单开发,Android开发学习笔记:浅谈3大类菜单
在Android系統中,菜單可以分為三類:選項菜單(Option Menu),上下文菜單(Context Menu)以及子菜單(Sub Menu)。
一.選項菜單(Option Menu)
創建選項菜單的步驟:
1.覆蓋Activity的onCreateOptionMenu(Menu menu)方法,當菜單第一次被打開時調用
2.調用Menu的add( )方法添加菜單項(MenuItem),同時可以調用MenuItem的setIcon( )方法來為菜單項設置圖標
3.當菜單項(MenuItem)被選擇時,覆蓋Activity的onOptionsItemSelected(MenuItem item)來響應事件
選項菜單的實例:
packagecom.android.menu.activity;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
publicclassOptionMenuActivityextendsActivity?{
//聲明菜單項常量
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)來添加菜單項
publicbooleanonCreateOptionsMenu(Menu?menu)?{
//android.R使用的是系統自帶的圖標
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)來響應菜單選項被單擊事件
publicbooleanonOptionsItemSelected(MenuItem?item)?{
switch(item.getItemId())?{
caseITEM_1:
setTitle("開始游戲!");
break;
caseITEM_2:
setTitle("查看幫助!");
break;
caseITEM_3:
setTitle("退出游戲!");
break;
}
returntrue;
}
}
效果圖:
二.上下文菜單(Context Menu)
創建上下文菜單的步驟:
1.覆蓋Activity的onCreateOptionMenu(Menu menu)方法,調用Menu的add( )方法添加菜單項(MenuItem).
2.覆蓋Activity的onOptionsItemSelected(MenuItem item)來響應事件
3.調用registerForContextMenu( )方法來為視圖注冊上下文菜單
上下文菜單的實例(按住“測試Context Menu”2秒,就會出現上下文菜單):
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);
//調用registerForContextMenu()來注冊上下文菜單
registerForContextMenu(text);
}
@Override
publicvoidonCreateContextMenu(ContextMenu?menu,?View?v,
ContextMenuInfo?menuInfo)?{
menu.add(0,?ITME_1,0,"紅色背景");
menu.add(0,?ITME_2,0,"藍色背景");
menu.add(0,?ITME_3,0,"白色背景");
}
@Override
publicbooleanonContextItemSelected(MenuItem?item)?{
switch(item.getItemId())?{
caseITME_1:
//設置TextView的背景顏色
text.setBackgroundColor(Color.RED);
break;
caseITME_2:
text.setBackgroundColor(Color.BLUE);
break;
caseITME_3:
text.setBackgroundColor(Color.WHITE);
break;
}
returntrue;
}
}
效果圖:
三.子菜單(Sub Menu)
創建子菜單的步驟:
1.覆蓋Activity的onCreateOptionMenu(Menu menu)方法,調用Menu的addSubMenu( )方法來添加子菜單(Sub Menu)
2.調用SubMenu的add( )方法來添加子菜單(Sub Menu)
3.覆蓋onContextItemSelect( )方法來響應菜單單擊事件
子菜單的實例:
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)方法,添加子菜單項
publicbooleanonCreateOptionsMenu(Menu?menu)?{
SubMenu?ad?=?menu.addSubMenu("添加").setIcon(android.R.drawable.ic_menu_add);
SubMenu?re?=?menu.addSubMenu("關閉").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),響應菜單選項被單擊事件
publicbooleanonOptionsItemSelected(MenuItem?item)?{
switch(item.getItemId())?{
caseITEM_1:
setTitle("添加文件!");
break;
caseITEM_2:
setTitle("添加圖片!");
break;
}
returntrue;
}
}
效果圖:
注:menu.add的方法中的參數:
1.int類型的group ID參數,代表的是組概念,你可以將幾個菜單項歸為一組,以便更好的以組的方式管理你的菜單按鈕。可以用到的方法有:
removeGroup(id)
setGroupCheckable(id, checkable, exclusive)
setGroupEnabled(id,boolean enabled)
setGroupVisible(id,visible)
2.int類型的item ID參數,代表的是項目編號。這個參數非常重要,一個item ID對應一個Menu中的選項。在后面使用菜單的時候,就是靠這個item ID來判斷,你選中的是哪個選項。
3.int類型的order ID參數,代表的是菜單項的顯示順序。默認是0,表示菜單的顯示順序就是按照add的順序來顯示。
4.String類型的title參數,表示選項中顯示的文字。
總結
以上是生活随笔為你收集整理的android 自定义菜单开发,Android开发学习笔记:浅谈3大类菜单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android最新框架,XUpdate
- 下一篇: android 设置对话框的高度,如何控