Creating Menus
android 菜单包括三种.Options Menu , Context Menu 和Submenu.
本文完整代码 CSDN下载频道 :http://download.csdn.net/source/2900952 ,
- 1.Options Menu(选项菜单)
![hi](http://hi.csdn.net/attachment/201012/11/4067072_1292049871L4Gl.jpg)
[java]
@Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch(item.getItemId()) { case 1://id可以是用menu.add方法生成的数字,也可是用xml文件生成的R.id.XX System.out.println("new clicked"); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add(0, 1, 1, "new"); menu.add(0, 2, 2, "open"); menu.add(0, 3, 3, "close"); menu.add(0, 4, 4, "start"); menu.add(0, 5, 5, "about"); menu.add(0, 6, 6, "restart"); menu.add(0, 7, 7, "reopen"); SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单"); Resources res = getBaseContext().getResources(); sub.setIcon(res.getDrawable(R.drawable.icon)); sub.setHeaderIcon(res.getDrawable(R.drawable.icon)); sub.add(1, 3, 0, "Menu A1"); sub.add(1, 4, 1, "Menu A2"); return super.onCreateOptionsMenu@方法2 在xml文件中定义好
[xhtml]
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/new_game" android:icon="@drawable/ic_new_game" android:title="@string/new_game" /> <item android:id="@+id/quit" android:icon="@drawable/ic_quit" android:title="@string/quit" /> </menu>并在java文件中.调用如下方法
[java]
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.game_menu, menu); return true; }2.Context Menu(上下文菜单,类似windows下的右键菜单)
![hi](http://hi.csdn.net/attachment/201012/11/4067072_1292050274M1ig.jpg)
- 一般,contextMenu多用于ListView 视图中,当用户持续按住一个listItem的时候.就可以弹出ContextMenu来.并执行需要的功能. 可用如下代码生成contextMenu: 并需要调用
registerForContextMenu()对contextMenu进行注册;
[java]
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v,
- ContextMenuInfo menuInfo) {
- // TODO Auto-generated method stub
- menu.setHeaderTitle("ContextMenu");
- menu.add(0, 0, 0, "contextMenuItem 0");
- menu.add(0, 1, 0, "contextMenuItem 1");
- super.onCreateContextMenu(menu, v, menuInfo);
- }
- //长按菜单响应函数
- @Override
- public boolean onContextItemSelected(MenuItem item) {
- setTitle("contextMenuItem"+item.getItemId()+"Clicked");
- return super.onContextItemSelected(item);
- }
registerForContextMenu()的方法代码如下:
[java]
list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { @Override public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { menu.setHeaderTitle("ContextMenu"); menu.add(0, 0, 0, "contextMenuItem0"); menu.add(0, 1, 0, "contextMenuItem1"); } });直接将list绑定到list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() 接口并在其中用匿名类写相应的代码. 3.Submenu(子菜单,类似windows下,右键菜单中,黑色三角形指向的菜单)
![he](http://hi.csdn.net/attachment/201012/11/4067072_1292050145oRrl.jpg)
[java]
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // TODO Auto-generated method stub
- SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单");
- Resources res = getBaseContext().getResources();
- sub.setIcon(res.getDrawable(R.drawable.icon));
- sub.setHeaderIcon(res.getDrawable(R.drawable.icon));
- sub.add(1, 3, 0, "Menu A1");
- sub.add(1, 4, 1, "Menu A2");
- return super.onCreateOptionsMenu(menu);
- }