1、选项菜单:OptionsMenu 按menu键弹出的菜单
2、上下文菜单 ContextMenu 长按某个控件弹出的菜单
选项菜单:有两种创建方式
第一种:
功能:按下menu键弹出菜单列表。
使用场景:必要的不常用的功能。
重写onCreateOptionsMenu()方法(创建activity的时候会默认重写onCreateOptionsMenu方法)
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 0, "确定").setIcon(R.drawble.XXX);
menu.add(0, 2, 0, "取消");
return true;
}
注意:OptionsMenu最多能显示六个、超过部分是以列表形式展现的。
按钮的点击事件:
重写onOptionsItemSelected()方法:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { //通过按钮的id来区别
case 1:
Toast.makeText(this, "点击了确定", Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(this, "点击了取消", Toast.LENGTH_LONG).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
第二种:直接通过xml可视化添加getMenuInflater().inflate(R.menu.xml_optionsmenu, menu);
使用这个方法来得到
//创建
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.xml_optionsmenu, menu);
return true;
}
//点击事件
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item1:
Toast.makeText(this, "点击了确定", Toast.LENGTH_LONG).show();
break;
case R.id.item2:
Toast.makeText(this, "点击了确定", Toast.LENGTH_LONG).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
上下文菜单 ContextMenu
创建步骤:
1、registerForContextMenu(mTextView1); //为某个控件注册上下文菜单
2、重写onCreateContextMenu();
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
Log.e("onCreateContextMenu", "onCreateContextMenu");
switch (v.getId()) {
case R.id.textView1:
menu.add(0, 1, 0, "设置");
menu.add(0, 2, 0, "取消");
break;
case R.id.textView2:
menu.add(0, 3, 0, "设置1");
menu.add(0, 4, 0, "取消1");
break;
default:
break;
}
super.onCreateContextMenu(menu, v, menuInfo);
}
3、点击事件:重写onContextItemSelected();
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
mTextView1.setText("设置");
break;
case 2:
mTextView1.setText("取消");
break;
default:
break;
}
return super.onContextItemSelected(item);
}
选项菜单和上下文菜单的区别:
1、触发方式不一样。(按menu键; 长按控件)
2、显示方式不一样。 (界面底部弹出;界面中间)
3、上下文菜单触发方式比较隐蔽。
4、范围不一样 (activity; view)
5、onCreateOptionsMenu()方法只调用一次
onCreateContextMenu()方法会被调用多次