安卓软件开发常用的三种菜单分别是:选项菜单,子菜单,上下文菜单。其中,每个activity只能有且仅有一个选项菜单,为整个activity服务,但是可以有无数个子菜单和上下文/快捷菜单。
选项菜单
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//创建选项菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 在菜单中添加菜单项
menu.add(Menu.FIRST, 1,1, "删除");//使程序阅读性更好
menu.add(Menu.FIRST, 2,2, "保存");
menu.add(Menu.FIRST+1, 3,2, "其他");
menu.add(Menu.FIRST+1, 4,1, "取消");
menu.setGroupEnabled(2, false);//设置第二组菜单不可用
//参数含义:1 组别 2 菜单项的id号,用来确定不同的菜单项
//3 用来排序的序号,越小越靠前 4 菜单显示的内容
return true;//表示显示菜单
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
Toast.makeText(MainActivity.this,"删除操作" , Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(MainActivity.this,"保存操作" , Toast.LENGTH_LONG).show();
break;
case 3:
Toast.makeText(MainActivity.this,"其他操作" , Toast.LENGTH_LONG).show();
break;
case 4:
Toast.makeText(MainActivity.this,"取消操作" , Toast.LENGTH_LONG).show();
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}
}
子菜单
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 创建子菜单
SubMenu subMenu1=menu.addSubMenu(1, 1, 1, "系统设置");
//创建子菜单项
subMenu1.add(1, 101, 1, "网络设置");
subMenu1.add(1, 101, 1, "高级设置");
// 创建子菜单2
SubMenu subMenu2=menu.addSubMenu(2, 2, 1, "系统关闭");
//创建子菜单项
subMenu2.add(1, 101, 1, "直接关闭");
subMenu2.add(2, 102, 2, "稍后重启");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case 101:
Toast.makeText(MainActivity.this, "网络设置", 0).show();
break;
case 102:
Toast.makeText(MainActivity.this, "高级设置", 0).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
上下文菜单
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.tv);
//注册,为视图注册上下文菜单,在此是tv
this.registerForContextMenu(tv);//那个英文电子书上按word可以有弹出解释的是不是也是这个/
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
switch (v.getId()) {
case R.id.tv:
menu.setHeaderTitle("我的操作");
menu.add(1, 1, 1, "试试就试试,变为红色!");
menu.add(1, 2, 2, "试试就试试,变为绿色!");
menu.add(1, 3, 3, "试试就试试,变为蓝色!");
break;
default:
break;
}
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case 1:
tv.setTextColor(0xFFFF0000);
break;
case 2:
tv.setTextColor(0xFF00FF00);
break;
case 3:
tv.setTextColor(0xFF0000FF);
break;
default:
return super.onContextItemSelected(item);
}
return true;
}
}
(需长按文本)