(一)Android布局时菜单资源文件使用
Android Menu资源的使用:
菜单分为三种:OptionsMenu(选项菜单);ContextMenu(上下文菜单);SubMenu(子菜单);
OptionsMenu默认情况下是在点击Menu键后出现在底部。ContextMenu常常和长按事件或其他手势动作结合使用。实现的方式可以分为java代码实现和xml资源文件。
1.使用Java代码实现:(以OptionsMenu和ContextMenu为例)
调用资源文件:[<package_name>.]R.menu.<file_name>;
public boolean onCreateOptionsMenu(Menu menu);//调用选项菜单
public boolean onOptionsItemSelected(MenuItem item);//选项菜单选择后动作
public void onOptionsMenuClosed(Menu menu);//菜单关闭后
public boolean onPrepareOptionsMenu(Menu menu);//菜单打开前
public boolean onMenuOpened(int featureId, Menu menu);//菜单打开后
后三个函数可以用来根据设计要求对菜单进行动作设置;
ContextMenu就是将OptionsMenu替换,例如onCreateContextMenu();
实例代码:(与长按事件结合使用的上下文菜单的调用)
A.registerForContextMenu(XXXX);//为XXXX注册上下文菜单
B.XXXX.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> ada, View view,
int arg2, long longIndex) {
index=arg2;//这里是将选择的listview的选项传递给后面的动作处理
XXXX.showContextMenu();//显示菜单
return true;
}
});
}
C.public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo){
menu.setHeaderTitle("");
menu.add(0,0, Menu.NONE,"");
menu.add(0,1, Menu.NONE,"");
//menu.add(0,2,0,"").setIcon(R.drawable.XXXX);添加图标
//关于menu.add():第一个int表示groupid,可以实现setGroupXXX()的统一管理;第二个int表示menu里面选项的索引号;第三个int表示menu的顺序,如果默认为添加顺序则为0(Menu.NONE);第四个是文本信息。
}
D.public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
case 1:.......
}}
2.使用菜单资源文件
Xml文件访问@[<package_name>:]menu/file_name
菜单资源的根元素通常是<menu.../>,这里不详细说明资源菜单的内容。
与上面的java方式的区别是需要增加一个“装填”菜单的动作:
例如:
Public onCreateOptiosMenu(Menu menu){
MenuInflater inflator= new MenuInflater(this);
Inflator.inflate(R.menu.file_name,menu)//一般资源文件在res/menu
menu.setHeaderIcon(R.drawable.XXXX);//标题图片
menu.setHeaderTitle(“”);//标题
Return super.onCreateOptionsMenu(menu);
}
其余与上述一致。