我发现我在学习每一个Android界面控件的时候花的时间都比较多,因为是初学,可能学习方法和方式还有待改进。
本篇记录选项菜单和上下文菜单的基本实现和用法。
选项菜单即按下手机硬按键MENU键弹出的底部菜单,最多同时显示6个小项目,更多将显示为MORE..点击到子菜单
//添加菜单项
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
mainmenu = menu;
mainmenu.add(0, 1, Menu.NONE, "菜单1").setIcon(R.drawable.icon);
mainmenu.add(0, 2, Menu.NONE, "菜单2");
mainmenu.add(0, 3, Menu.NONE, "菜单3");
mainmenu.add(1, 4, Menu.NONE, "菜单4");
mainmenu.add(1, 5, Menu.NONE, "菜单5");
mainmenu.add(1, 6, Menu.NONE, "菜单6");
// add的第一个参数是group号,可制订点击按钮对某组全体控制隐藏显示
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
setTitle(item.getItemId() + item.getTitle().toString());
return super.onOptionsItemSelected(item);
}
//隐藏某群组菜单函数,写在一个按钮的监听函数中
private OnClickListener TOGGLE_LISTEN = new OnClickListener() {
public void onClick(View v) {
if (mIsGroupVisible == true) {
mainmenu.setGroupVisible(1, false);//隐藏组号1的菜单群
mIsGroupVisible = false;
} else {
mainmenu.setGroupVisible(1, true);
mIsGroupVisible = true;
}
}
};
//在onCreat函数中注册要接受长按响应上下文菜单
//为两个文本框注册上下文菜单
this.registerForContextMenu(findViewById(R.id.longan2));
this.registerForContextMenu(findViewById(R.id.longan));
//添加长按菜单项
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.longan:
//if(menu.hasVisibleItems())return;
menu.add(2, 11, Menu.NONE, "菜单1");
SubMenu master = menu.addSubMenu(4, 41, 1, "Master..");//SubMenu是子菜单,有且只有一层,可以接受点击
master.add("wt1");
master.add("wt2");
master.add("wt3");
menu.add(2, 12, Menu.NONE, "菜单2");
menu.add(2, 13, Menu.NONE, "菜单3");
menu.add(2, 14, Menu.NONE, "菜单4");
break;
case R.id.longan2:
menu.add(3, 21, Menu.NONE, "菜单21");
menu.add(3, 22, Menu.NONE, "菜单22");
break;
}
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
setTitle(item.getTitle());
return super.onContextItemSelected(item);
}