Android_转载_creating menus_创建Menus

来源:互联网 发布:临沂软件开发公司 编辑:程序博客网 时间:2024/05/21 15:47

Creating Menus

android 菜单包括三种.Options Menu , Context Menu   和Submenu.


 

1.Options Menu(选项菜单)

 

@方法1        
需要重写public boolean onCreateOptionsMenu(Menu menu)和
public boolean onOptionsItemSelected(MenuItem item)方法,
可用如下代码,添加menuitem

 

01.@Override  02.    public boolean onOptionsItemSelected(MenuItem item) {  03.        // TODO Auto-generated method stub  04.        switch(item.getItemId()) {  05.        case 1://id可以是用menu.add方法生成的数字,也可是用xml文件生成的R.id.XX  06.            System.out.println("new clicked");  07.            return true;  08.              09.        }  10.        return super.onOptionsItemSelected(item);  11.    }  12.    @Override  13.    public boolean onCreateOptionsMenu(Menu menu) {  14.        // TODO Auto-generated method stub  15.        menu.add(0, 1, 1, "new");  16.        menu.add(0, 2, 2, "open");  17.        menu.add(0, 3, 3, "close");  18.        menu.add(0, 4, 4, "start");  19.        menu.add(0, 5, 5, "about");  20.        menu.add(0, 6, 6, "restart");  21.        menu.add(0, 7, 7, "reopen");  22.        SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单");  23.        Resources res = getBaseContext().getResources();  24.        sub.setIcon(res.getDrawable(R.drawable.icon));  25.        sub.setHeaderIcon(res.getDrawable(R.drawable.icon));  26.        sub.add(1, 3, 0, "Menu A1");  27.        sub.add(1, 4, 1, "Menu A2");  28.        return super.onCreateOptionsMenu  


 

@方法2 
在xml文件中定义好
01.<?xml version="1.0" encoding="utf-8"?>  02.<menu xmlns:android="http://schemas.android.com/apk/res/android">  03.    <item android:id="@+id/new_game"  04.          android:icon="@drawable/ic_new_game"  05.          android:title="@string/new_game" />  06.    <item android:id="@+id/quit"  07.          android:icon="@drawable/ic_quit"  08.          android:title="@string/quit" />  09.</menu>  

 

并在java文件中.调用如下方法

01.@Override  02.public boolean onCreateOptionsMenu(Menu menu) {  03.    MenuInflater inflater = getMenuInflater();  04.    inflater.inflate(R.menu.game_menu, menu);  05.    return true;  06.}  


 

2.Context Menu(上下文菜单,类似windows下的右键菜单)

(有点类似android中的dialog对话框.)
 
一般,contextMenu多用于ListView 视图中,当用户持续按住一个listItem的时候.就可以弹出ContextMenu来.并执行需要的功能.
可用如下代码生成contextMenu:
并需要调用registerForContextMenu()对contextMenu进行注册;
01.@Override  02.    public void onCreateContextMenu(ContextMenu menu, View v,  03.            ContextMenuInfo menuInfo) {  04.        // TODO Auto-generated method stub  05.        menu.setHeaderTitle("ContextMenu");     06.        menu.add(0, 0, 0, "contextMenuItem 0");  07.        menu.add(0, 1, 0, "contextMenuItem 1");    08.        super.onCreateContextMenu(menu, v, menuInfo);  09.    }  10.    //长按菜单响应函数  11.    @Override  12.    public boolean onContextItemSelected(MenuItem item) {  13.        setTitle("contextMenuItem"+item.getItemId()+"Clicked");   14.        return super.onContextItemSelected(item);  15.    }  


我在网上发现另一种不用调用 registerForContextMenu()的方法代码如下:

01.list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {  02.              03.            @Override  04.            public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  05.                menu.setHeaderTitle("ContextMenu");     06.                menu.add(0, 0, 0, "contextMenuItem0");  07.                menu.add(0, 1, 0, "contextMenuItem1");     08.            }  09.        });  
直接将list绑定到list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
接口并在其中用匿名类写相应的代码.

 

3.Submenu(子菜单,类似windows下,右键菜单中,黑色三角形指向的菜单)

 
当然也可以用两种方式生成.一种是通过xml文件,一种是java中直接写代码.
android的文档中,只是简单的描述了下,用xml文件设的子菜单.

我用的后一种方法.代码如下:
01.@Override  02.public boolean onCreateOptionsMenu(Menu menu) {  03.    // TODO Auto-generated method stub  04.      05.    SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单");  06.    Resources res = getBaseContext().getResources();  07.    sub.setIcon(res.getDrawable(R.drawable.icon));  08.    sub.setHeaderIcon(res.getDrawable(R.drawable.icon));  09.    sub.add(1, 3, 0, "Menu A1");  10.    sub.add(1, 4, 1, "Menu A2");  11.    return super.onCreateOptionsMenu(menu);  12.}  


 

菜单选项还有许多其他的特性.
包括,menu Groups,将按钮分组,菜单分组,可以方便的将组中的菜单visiable属性,Enable属性,checkable属性,一齐改变.

包括 Checkable menu items,用类似checkbox的属性或者radiobutton的属性.

包括Shortcut keys(快捷键),

包括intent for menu items(android中用于activity间传输数据的一种方式).

包括Dynamically adding Intents(动态增加intent).

包括Allowing your Activity to be added to menus(允许activty被增加到多个菜单项中)等.

 

本文完整代码 CSDN下载频道 :http://download.csdn.net/source/2900952 ,

本文章转载自http://blog.csdn.net/Jason69181/article/details/6069673

 

 

 

 

 

 

原创粉丝点击