子菜单,即点击菜单后出现一个菜单栏供选择
创建子菜单的步骤:
(1) 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单
(2) 调用SubMenu的add()方法,添加子菜单项
(3) 覆盖onContextItemSelected()方法,响应子菜单的单击事件
示例:
(1) 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单
1 //动态添加子菜单 2 3 SubMenu file = menu.addSubMenu("文件");//子菜单的名字 4 SubMenu edit = menu.addSubMenu("编辑");//子菜单的名字 5
(2) 调用SubMenu的add()方法,添加子菜单项
1 //给子菜单添加菜单项 2 file.setHeaderTitle("文件操作");//菜单标题 3 file.setHeaderIcon(R.drawable.icon_72); //菜单图标 4 file.add(1, 100, 1, "打开"); 5 file.add(1, 101, 1, "关闭"); 6 file.add(1, 102, 1, "删除"); 7 8 edit.setHeaderTitle("编辑操作"); 9 edit.setHeaderIcon(R.drawable.icon_72); 10 edit.add(2,100,1,"复制"); 11 edit.add(2,101,1,"粘贴"); 12 edit.add(2,102,1,"剪切");
// 添加OptionsMenu菜单项,即4,5,6,10,11,12行代码方法
/* menu.add(groupId, itemId, order, title)
* groupId:菜单项所在的组
* itemId:菜单项编号
* order:排序
* title:标题
* setIcon()方法为菜单设置图标,
(3) 覆盖onContextItemSelected()方法,响应子菜单的单击事件
1 //添加响应事件 2 @Override 3 public boolean onOptionsItemSelected(MenuItem item) { 4 // TODO Auto-generated method stub 5 6 //先判断组id再判断item 的id 7 if(item.getGroupId()==1) 8 { 9 switch (item.getItemId()) { 10 case 100: 11 Toast.makeText(SubMenu_text.this, "点击了打开", 1).show(); 12 break; 13 case 101: 14 Toast.makeText(SubMenu_text.this, "点击了关闭", 1).show(); 15 break; 16 case 102: 17 Toast.makeText(SubMenu_text.this, "点击了删除", 1).show(); 18 break; 19 20 default: 21 break; 22 } 23 } 24 else if(item.getGroupId()==2) 25 { 26 switch (item.getItemId()) { 27 case 100: 28 Toast.makeText(SubMenu_text.this, "点击了复制", 1).show(); 29 break; 30 case 101: 31 Toast.makeText(SubMenu_text.this, "点击了粘贴", 1).show(); 32 break; 33 case 102: 34 Toast.makeText(SubMenu_text.this, "点击了剪切", 1).show(); 35 break; 36 37 default: 38 break; 39 } 40 } 41 return super.onOptionsItemSelected(item); 42 }
完整代码:
1 package information; 2 3 import com.example.allcode.R; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.view.Menu; 8 import android.view.MenuItem; 9 import android.view.SubMenu; 10 import android.widget.Toast; 11 12 public class SubMenu_text extends Activity{ 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 // TODO Auto-generated method stub 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.submenu); 18 } 19 20 @Override 21 public boolean onCreateOptionsMenu(Menu menu) { 22 // TODO Auto-generated method stub 23 //动态添加子菜单 24 25 SubMenu file = menu.addSubMenu("文件");//子菜单的名字 26 SubMenu edit = menu.addSubMenu("编辑");//子菜单的名字 27 28 //给子菜单添加菜单项 29 file.setHeaderTitle("文件操作");//菜单标题 30 file.setHeaderIcon(R.drawable.icon_72); //菜单图标 31 file.add(1, 100, 1, "打开"); 32 file.add(1, 101, 1, "关闭"); 33 file.add(1, 102, 1, "删除"); 34 35 edit.setHeaderTitle("编辑操作"); 36 edit.setHeaderIcon(R.drawable.icon_72); 37 edit.add(2,100,1,"复制"); 38 edit.add(2,101,1,"粘贴"); 39 edit.add(2,102,1,"剪切"); 40 41 return super.onCreateOptionsMenu(menu); 42 43 } 44 45 //添加响应事件 46 @Override 47 public boolean onOptionsItemSelected(MenuItem item) { 48 // TODO Auto-generated method stub 49 50 //先判断组id再判断item 的id 51 if(item.getGroupId()==1) 52 { 53 switch (item.getItemId()) { 54 case 100: 55 Toast.makeText(SubMenu_text.this, "点击了打开", 1).show(); 56 break; 57 case 101: 58 Toast.makeText(SubMenu_text.this, "点击了关闭", 1).show(); 59 break; 60 case 102: 61 Toast.makeText(SubMenu_text.this, "点击了删除", 1).show(); 62 break; 63 64 default: 65 break; 66 } 67 } 68 else if(item.getGroupId()==2) 69 { 70 switch (item.getItemId()) { 71 case 100: 72 Toast.makeText(SubMenu_text.this, "点击了复制", 1).show(); 73 break; 74 case 101: 75 Toast.makeText(SubMenu_text.this, "点击了粘贴", 1).show(); 76 break; 77 case 102: 78 Toast.makeText(SubMenu_text.this, "点击了剪切", 1).show(); 79 break; 80 81 default: 82 break; 83 } 84 } 85 return super.onOptionsItemSelected(item); 86 } 87 }
注意:为了实现界面的美化,需要给该activity一个样式
在AndroidManifest.xml文件下修改
<activity android:name="information.SubMenu_text"
android:theme="@android:style/Theme.Light.NoTitleBar">
</activity>
效果图: