当前位置: 代码迷 >> Android >> Android入门基础(13) menu菜单集锦
  详细解决方案

Android入门基础(13) menu菜单集锦

热度:75   发布时间:2016-05-01 17:53:54.0
Android入门基础(13) menu菜单汇总

                                                             Android入门学习(13

                                                                              ------简单实用菜单menu

Menu有两种加载方法,可以再java代码中加入,也可以再res/menu下的.xml文件下配置完成。

java代码中使用

1、覆盖ActivityonCreateOptionsMenu(Menu menu)函数

2、 调用menuadd()方法添加菜单项(MenuItem),可以调用MenuItemsetIcon()方法来为菜单设置图标

3、当菜单项()被选择时,我们可以通过覆盖ActivityonOptionsItemSeleted()方法来响应事件,利用返回值可以调用时件函数。

具体事例:

                                            

/**

 *返回值为boobean,静态的添加了菜单项

 */

publicboolean onCreateOptionsMenu(Menu menu)

    {

       menu.add(0,0,0,R.string.app_about);

       menu.add(0,1,1,R.string.app_exit);

      

       returnsuper.onCreateOptionsMenu(menu);

    }

解释下menu.add()方法:

 应用android SDK/doc,此方法有很对重载方法,这里只引用一处。

   public abstract MenuItem add (int groupId, int itemId, int order, CharSequence title)

Add a new item to themenu. This item displays the given title for its label.

Parameters

groupId

The group identifier that this item  should be part of. This can be used to define groups of items for batch state  changes. Normally use NONE if an item should not be in a group.

itemId

Unique item ID. Use NONE if you do not need a unique ID.

order

The order for the item. Use NONE if you do not care about the order.  See getOrder().

title

The text to display for the item.

 

publicabstract MenuItem add (int groupId, int itemId, int order, inttitleRes)

参数说明:

groudId:是指组ID,用以批量地对菜单子项进行处理和排序

itemId:是子项ID,是每一个菜单子项的唯一标识

order:指定菜单子项在选项菜单中的排列顺序

titlerRes菜单标题的引用

 

/** *对user的选择做出判断 */publicboolean onOptionsItemSelected(MenuItem item)    {       super.onOptionsItemSelected(item);       switch(item.getItemId())       {       case 0:          openOptionsDialog(); //响应时间          break;       case 1:          finish();          break;              }       returntrue;    } /***点击处理函数。类似于按钮监听*/privatevoid openOptionsDialog() {       // 这里写要处理的方法行为           }还可以为menu设置图像:public boolean onCreateOptionsMenu(Menumenu) {         menu.add(0, ITEM, 0, "下载").setIcon(R.drawable.download);//设置图标           return true;   } 


 

二再xml中配置和上面可以实现相同效果

1,        res下建立menu文件夹,在内建立menufail.xml文件

<?xmlversion="1.0"encoding="utf-8"?>

  <menuxmlns:android="http://schemas.android.com/apk/res/android">

         <group android:id="@+id/grout_main"> 

           <itemandroid:id="@+id/menu_a"            

                android:title="关于"/>  

           <itemandroid:id="@+id/menu_b"      

                android:title="退出"/>

          </group>

     

 </menu>

2     覆盖ActivityonCreateOptionsMenu(Menu menu)函数

@Override
   
publicboolean
onCreateOptionsMenu(Menu menu) {
       
// TODO Auto-generated method stub
        MenuInflater inflater =getMenuInflater();
        inflater.inflate(R.menu.menufile,menu);
        returntrue
;
   
}

 

SubMenu

步骤和上基本一样,代码有区别,重写时:

publicboolean onCreateOptionsMenu(Menu menu)

    {

       SubMenu subMenu = menu.addSubMenu(1, 100, 100, "选我");   

       subMenu.add(2, 101, 101, "男人");     

       subMenu.add(2, 102, 102, "女人");

       returnsuper.onCreateOptionsMenu(menu);

    }

                                           

3Context Menu

  首先在main.xml里定义若干个按钮。然后覆盖onCreateContextMenu(ContextMenu menu,View v, ContextMenuInfo menuInfo)方法。里面的代码如下:

首先要注册一下,在onCreate方法里,如下代码:

代码

@Override
   
publicvoid
onCreate(Bundle savedInstanceState) {
       
super
.onCreate(savedInstanceState);
       
setContentView(R.layout.main);
        b1 = (Button)findViewById(R.id.b1);
        b2 = (Button)findViewById(R.id.b2);
        registerForContextMenu(b1);
        registerForContextMenu(b2);
    }

 

代码

@Override
   
publicvoid
onCreateContextMenu(ContextMenu menu, View v,
           
ContextMenuInfo menuInfo) {
       
// TODO Auto-generated method stub
        if
(v==b1){
           
menu.setHeaderTitle("这是
1");
           
menu.add(200, 200, 200,"Context Menu 1");
            menu.add(200, 201, 201, "ContextMenu 2");
        }
        elseif
(v==b2){
           
menu.setHeaderTitle("这是
2");
           
menu.add(300, 300, 300,"C 1");
            menu.add(300, 301, 301,"C 2");
        }
        super
.onCreateContextMenu(menu, v, menuInfo);
   
}

 

 

  相关解决方案