一、选项菜单、子菜单
选项菜单通过点击界面右上角的图标调出,如果设为没有标题栏,就找不到菜单
1.显示
重写onCreateOptionsMenu函数,创建选项菜单
private void setIconEnable(Menu menu, boolean enable){
try {
Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");
Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
m.setAccessible(true);
//MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)
m.invoke(menu, enable);
}catch (Exception e){
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
setIconEnable(menu,true);
MenuItem item1 = menu.add(1,0,0,"a");
item1.setIcon(android.R.drawable.ic_menu_icon);//设置选项前显示的图标
MenuItem item2 = menu.add(1,1,0,"bb");
SubMenu smenu1 = menu.addSubMenu(1,2,0,"sub");
MenuItem item5 = smenu1.add(1,3,0,"sub1");
MenuItem item6 = smenu1.add(1,4,0,"sub2");
return super.onCreateOptionsMenu(menu);
}
add函数:
第二个参数itemId:选项id,用于判断
第四个参数title:选项显示的文字
第一个参数groupId、第三个参数order
2.事件
重写onOptionsItemSelected函数
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case 0:
//执行操作
break;
case 1:
//执行操作
break;
}
return super.onOptionsItemSelected(item);
}
二、上下文菜单
1.显示
重写onCreateContextMenu函数
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(1,11,0,"xx");
menu.add(1,12,0,"xxx");
}
2.事件
onCreate函数中绑定控件(tv)
registerForContextMenu(tv);
重写onContextItemSelected函数
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case 11:
//执行操作
break;
case 12:
//执行操作
break;
}
return super.onContextItemSelected(item);
}