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 abstractMenuItemadd(int groupId, int itemId, int order,CharSequencetitle)

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 useNONEif an item should not be in a group.

itemId

Unique item ID. UseNONEif you do not need a unique ID.

order

The order for the item. UseNONEif you do not care about the order. SeegetOrder().

title

The text to display for the item.

publicabstractMenuItemadd(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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值