网络112 柳内恒
不管是在电脑上还是在手机上,菜单是不可缺少的一个重要部分,今天我们学习一下子菜单的介绍。
1. 选项菜单和子菜单
选项菜单就是按“菜单”键时所弹出的菜单选项,通常选项菜单最多只能显示6个选项,当选项多于6个是时,最后一个选项会被默认的变成一个子菜单“更多”。当点击“更多”时就会弹出其它没有显示完的选项。
(1)新建一个名为“MenuTest”的Android Project。新建以后的代码如下:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText t1=(EditText)findViewById(R.id.t1);//注册文本框t1 Button b1=(Button)findViewById(R.id.b1);//注册按钮b1 this.registerForContextMenu(t1);//为文本框t1注册上下文菜单 this.registerForContextMenu(b1); }
(2)在MenuTestActivity类中,右单击Source→Override/Implement Methods。通过onCreateOptionsMenu()方法来生成选项菜单,代码如下:
public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub super.onCreateOptionsMenu(menu);//调用父类的方法 SubMenu subMenu=menu.addSubMenu("系统设置");//主菜单 subMenu.add(1,1,1,"显示设置");//菜单项 subMenu.add(1,2,2,"标题设置"); subMenu.add(1,3,3,"文件设置"); subMenu.add(1,4,4,"菜单设置"); SubMenu subMenu2=menu.addSubMenu("文件"); subMenu2.add(1,1,1,"新建文件"); subMenu2.add(1,2,2,"文件修改"); SubMenu subMenu3=menu.addSubMenu("编辑"); subMenu3.add(1,1,1,"编辑部份"); subMenu3.add(1,2,2,"编辑全部"); SubMenu subMenu4=menu.addSubMenu("新建文件夹"); subMenu4.add(1,1,1,"单个新建"); subMenu4.add(1,2,2,"批量新建"); SubMenu subMenu5=menu.addSubMenu("设置墙纸"); subMenu5.add(1,1,1,"相册"); subMenu5.add(1,2,2,"系统墙纸"); SubMenu subMenu6=menu.addSubMenu("搜索"); subMenu6.add(1,1,1,"文件搜索"); subMenu6.add(1,2,2,"文章搜索"); SubMenu subMenu7=menu.addSubMenu("新建文件"); subMenu7.add(1,1,1,"空白文件"); subMenu7.add(1,2,2,"模板文件"); return true; }
2. 上下文菜单
上下文菜单就是在Android系统中长按某控件所弹出的菜单,就是Windows单击鼠标右键弹出的菜单。
(1)注册上下文菜单
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText t1=(EditText)findViewById(R.id.t1);//注册文本框t1 Button b1=(Button)findViewById(R.id.b1);//注册按钮b1 this.registerForContextMenu(t1);//为文本框t1注册上下文菜单 this.registerForContextMenu(b1); }
(2)生成上下文菜单
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); if(v.getId()==R.id.t1)//判断用户选择的对象 { menu.clear(); menu.setHeaderTitle("文件操作");//上下文菜单 menu.add(0,1,Menu.NONE,"发送"); menu.add(0,2,Menu.NONE,"标记为重要"); menu.add(0,3,Menu.NONE,"重命名"); menu.add(0,4,Menu.NONE,"删除"); } else if(v.getId()==R.id.b1) { menu.setHeaderTitle("编辑操作");//上下文菜单 menu.add(0,1,Menu.NONE,"发送"); menu.add(0,2,Menu.NONE,"标记为重要"); } }
(3)响应上下文菜单
public boolean onContextItemSelected(MenuItem item) { //响应上下文菜单 // TODO Auto-generated method stub t1.setText(item.getTitle()); return true; }
3. 在写上下文菜单的代码中需要注意要为需要弹出上下文菜单的控件注册上下文菜单。