1:ContextMenu
上下文菜单, 和具体的某一个view绑定,常见的场景为长按某一个view,然后弹出一个界面,ContextMenu默认位置居中显示
-
集成步骤
1)registerForContextMenu
注册contextmenu,即和相关的view进行绑定
2)onCreateContextMenu
创建contextmenu
3)onContextItemSelected
点击contextmenu -
效果图如下,长按紫色的view弹出的界面
- 代码如下
private void showContextMenu(View v) {
this.registerForContextMenu(v);
}
//创建ContextMenu
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//设置mune显示的内容
menu.setHeaderTitle("文件操作");
menu.setHeaderIcon(R.drawable.game_arrow_big);
menu.add(1, 1, 1, "copy");
menu.add(1, 2, 1, "cut");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
Toast.makeText(this, "clicked copy", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "clicked cut", Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
2:Option Menu
选项菜单,在单击手机menu键的时候弹出的界面,Option Menu和Activity相关,一个Activity有且只有一个Option Menu
在Activity中覆写的主要方法有
onCreateOptionsMenu
onOptionsItemSelected
onOptionsMenuClosed
onPrepareOptionsMenu
3: Popup Menu
直接显示在指定控件上的菜单,不再需要长按,而是通过代码来指定显示的控件及其位置;
集成步骤
- Activity实现
PopupMenu.OnMenuItemClickListener
接口 - 重载activity的
onMenuItemClick
方法 - 在点击某一个view的时候调用
popupMenu.show()
效果如下,点击紫色方框出现提示框
代码如下
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_image_save:
Toast.makeText(this, "保存图片", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
@Override
public void onClick(View v) {
if(v == mAppName){
this.btnShowPopup(mAppName);
}
}
/**
* 显示PopupMenu
*
* @param view
*/
public void btnShowPopup(View view) {
//创建PopupMenu,参数2:指定菜单与哪个控件挨着
popupMenu = new PopupMenu(this, view);
//获取菜单加载器
menuInflater = popupMenu.getMenuInflater();
menuInflater.inflate(R.menu.option_menu, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(this);
//显示菜单
popupMenu.show();
}