属性 :
title :设置菜单的文本
icon :设置菜单的背景
id :设置菜单的id
showAsAction :设置菜单的显示情况
always : 使菜单显示到工作台
withtext :控制图标和文本共同显示
IfRoom :如果有空间就显示
使菜单运行到虚拟机上
// 创建选项菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 加载菜单资源
getMenuInflater().inflate(R.menu.option,menu);
return true;
}
与id一同搭配使用来控制各个菜单的功能
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.save:
Toast.makeText(MyActivity.this,"保存",Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
Toast.makeText(MyActivity.this,"设置",Toast.LENGTH_SHORT).show();
break;
case R.id.exit:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
上下文菜单 : 通过长按进行使用
为按钮设置上下文操作模式
// ①实现ActionMode callback
// ②在view的长按事件中去启动上下文操作模式
ActionMode.Callback ac=new ActionMode.Callback() {
@Override
// 创建,在启动上下文操作模式(startActionMode(Callback))时调用
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
getMenuInflater().inflate(R.menu.context, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
return true;
}
// 在创建方法后开始调用
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.delete:
Toast.makeText(MyActivity.this, "删除", Toast.LENGTH_SHORT).show();
break;
case R.id.operate1:
Toast.makeText(MyActivity.this, "操作一", Toast.LENGTH_SHORT).show();
break;
case R.id.operate2:
Toast.makeText(MyActivity.this, "操作二", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
// 上下文操作模式结束时被调用
@Override
public void onDestroyActionMode(ActionMode actionMode) {
}
};
findViewById(R.id.ctx_btn).setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
startActionMode(ac);
return false;
}
});
弹出菜单 : 一般出现在被绑定的view的下方
final Button pb=findViewById(R.id.pop_btn);
pb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ①实例化popmenu对象
PopupMenu pm=new PopupMenu(MyActivity.this,pb);
// ②加载菜单资源,利用Menulnfalter
pm.getMenuInflater().inflate(R.menu.popup,pm.getMenu());
// ③为popmenu设置监听器
pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.copy:
Toast.makeText(MyActivity.this, "复制", Toast.LENGTH_SHORT).show();
break;
case R.id.paste:
Toast.makeText(MyActivity.this, "粘贴", Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
pm.show();
}
});