Android的Menu组件有三种OptionMenu SubMenu ContextMenu。其中创建OptionMenu SubMenu步骤如下:
1,重写Activity的onCreateOptionMenu(Menu menu)方法
2,调用add()来添加菜单选项 add(int groupId, int itemId,int order, CharSequence title)
@param groupId :选项组号,一般设置成0.
@param itemId :选项Id,供响应单击事件的函数使用.
@param order 顺序,一般设置成0.
@param title :标题.名称
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
Menu men1 = menu.addSubMenu("添加的一级SubMneu");
SubMenu men21 = men1.addSubMenu("添加的第一个二级SubMneu");
men21.add(0, 211, 1, "第一个二级SubMneu下第一个菜单");
men21.add(0, 212, 1, "第一个二级SubMneu下第二个菜单");
SubMenu <span style="font-family: Arial, Helvetica, sans-serif;">men22 = men1.addSubMenu("添加的第二个二级SubMneu");</span>
men22.add(0, 212, 1, "第二个二级SubMneu下第一个菜单");
men22.add(0, 212, 1, "第二个二级SubMneu下第二个菜单");
menu.add(0,0,1,R.string.updateButton);
menu.add(0,1,2,R.string.aboutButton);
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
如果要应用程序响应菜单单击事件,则需要重写Activity的onOptionsItemSelected(MenuItem mi)
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case 211:
System.out.println("第一个二级SubMneu下第一个菜单");
break;
case 212:
System.out.println("第一个二级SubMneu下第二个菜单");
break;
case 221:
System.out.println("第二个二级SubMneu下第一个菜单");
break;
case 222:
System.out.println("第二个二级SubMneu下第二个菜单");
break;
}
return super.onOptionsItemSelected(item);
}
ContextMenu类似于电脑上的右键,在长按莫个View之后会弹出菜单。开发ContextMenu需要重写onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)方法。且需要将其注册到莫个View组件上。
@Override
public void 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
public void 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, "Context Menu 2");
}
else if(v==b2){
menu.setHeaderTitle("这是2");
menu.add(300, 300, 300, "C 1");
menu.add(300, 301, 301, "C 2");
}
super.onCreateContextMenu(menu, v, menuInfo);
}
如果要应用程序响应菜单单击事件,则需要重写Activity的onContexttemSelected(MenuItem mi)方法跟
OptionMenu SubMenu 相似。