Android入门学习(13

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

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

java代码中使用

1、覆盖ActivityonCreateOptionsMenu(Menu menu)函数

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

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

具体事例:

[置顶] Android入门基础(13) menu菜单汇总_第1张图片

/**

*返回值为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);

}

[置顶] Android入门基础(13) menu菜单汇总_第2张图片

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

更多相关文章

  1. Android 代码当中动态改变某个控件的位置
  2. android觀察者模式三種實現方法
  3. Android ScrollView嵌套ListView 滑动冲突问题的解决方法
  4. android 获取本机号码及应加的权限 代码
  5. Android透明状态栏的实现方法
  6. DES加解密方法(C#和android通用)
  7. Android Studio 3.6运行模拟器Emulator警告问题解决方法

随机推荐

  1. Groovy Sql获取所有列
  2. 在PreparedStatement中重用参数?
  3. 水晶报表性能优化之道
  4. 【mysql】添加对emoji的支持
  5. 程序中处理一对多的数据
  6. 如何在sql server中生成并手动插入一个惟
  7. 使用 Servlet+jQuery+MySQL 实现简单的聊
  8. SQL 2005 Reporting Services:物理分页和
  9. sql查询每个学生的最高成绩mysql语句
  10. SQL server 2008 (R2) 无日志文附加数据