11. android 选项菜单(此处为icon menu)--Menu,SubMenu,MenuItem的用法
2011-04-19 22:50
766 查看
目录结构:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/ff5900c6be80eefc37638d879cad4d8e.gif)
第一步:
/OptionsMenuDemo/res/values/strings.xml
第二步:
/OptionsMenuDemo/res/layout/options_menu_layout.xml
第三步:
/OptionsMenuDemo/src/com/myoptionsmenu/values/MenuFinalValues.java
第四步:
/OptionsMenuDemo/src/com/myoptionsmenu/demo/OptionsMenuActivity.java
第五步:
/OptionsMenuDemo/AndroidManifest.xml
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/13dc9b8b4a3685eaa4f6a222ca40442d.gif)
初始化的时候(如要出现菜单,需按下Menu键)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/082adcdfd302dcafa88c95791cced525.gif)
按下MENU键后,菜单弹出
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/5f41d058cc196a173032cb768412c091.gif)
性别子菜单项
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/a9e433cc9310cec08d0266b99e7bfd76.gif)
爱好子菜单项
下载地址:
http://download.csdn.net/source/3207129
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/ff5900c6be80eefc37638d879cad4d8e.gif)
第一步:
/OptionsMenuDemo/res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">选项菜单</string> <string name="label">你的选择为 /n</string> <string name="gender">性别</string> <string name="male">男</string> <string name="female">女</string> <string name="hobby">体育爱好</string> <string name="basketball">篮球</string> <string name="football">足球</string> <string name="volleyball">排球</string> <string name="OK">确定</string> </resources>
第二步:
/OptionsMenuDemo/res/layout/options_menu_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/linearLayout" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <ScrollView android:id="@+id/scrollView" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="fill_parent" android:editable="false" android:cursorVisible="false" android:text="@string/label"/> </ScrollView> </LinearLayout>
第三步:
/OptionsMenuDemo/src/com/myoptionsmenu/values/MenuFinalValues.java
package com.myoptionsmenu.values; public interface MenuFinalValues { //总菜单项组的编号 public static final int MAIN_GROUP = 0; //性别子菜单组的编号 public static final int GENDER_GROUP = 1; //爱好子菜单组的编号 public static final int HOBBY_GROUP = 2; //性别为男的选项编号 public static final int MENU_GENDER_MALE = 3; //性别女的选项编号 public static final int MENU_GENDER_FEMALE = 4; //爱好篮球编号 public static final int MENU_HOBBY_BASKETBALL = 5; //足球 public static final int MENU_HOBBY_FOOTBALL = 6; //排球 public static final int MENU_HOBBY_VOLLEYBALL = 7; public static final int MENU_OK = 8; //性别子菜单 public static final int MENU_GENDER = 9; //爱好子菜单 public static final int MENU_HOBBY = 10; }
第四步:
/OptionsMenuDemo/src/com/myoptionsmenu/demo/OptionsMenuActivity.java
package com.myoptionsmenu.demo; import static com.myoptionsmenu.values.MenuFinalValues.*; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.MenuItem.OnMenuItemClickListener; import android.widget.EditText; /* * Option Menu是activity的一组基本的menu items,由机器上的menu键触发。 * Option Menu包含两种Menu item:Icon Menu item、Expended Menu item。 * Icon Menu是由用户点击触发的处于界面底端的菜单。 * 它最大可以有六个菜单,而且是唯一支持icon功能的menu item, * 也是唯一不支持checkbox和radio按钮的menu item。expanded menu是一个竖直列表。 * 当用户点击Icon menu的"more"选项时弹出。 * 它只会在Option menu超过六个时显视,Option Menu应该显视程序的基本功能或导航。 * 当用户第一次按menu键时,系统会调用onCreateOptionsMenu()方法, * 你可能通过编程,用 add()方法增加菜单或在xml中定义。 * 当一个item被选中时,onOptionsitemSelected()会被回调,此时可以用 getItemId() * 区分被选中的item。 * onCreateOptionsMenu:第一次调用时触发,用于初始化相关item */ public class OptionsMenuActivity extends Activity { private MenuItem male = null; private MenuItem[] hobbies = new MenuItem[3]; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.options_menu_layout); } @Override public boolean onCreateOptionsMenu(Menu menu) { //建立性别菜单组 SubMenu subMenuGender = menu.addSubMenu(MAIN_GROUP, MENU_GENDER, 0, R.string.gender); subMenuGender.setIcon(R.drawable.gender); //设置子菜单图标 subMenuGender.setHeaderIcon(R.drawable.gender); //为性别子菜单项添加菜单内容 male = subMenuGender.add(GENDER_GROUP, MENU_GENDER_MALE, 0, R.string.male); // 设置为默认值,即选中状态(此时后面的选中按钮未出现) male.setChecked(true); subMenuGender.add(GENDER_GROUP, MENU_GENDER_FEMALE, 0, R.string.female); //设置GENDER_GROUP组互斥,即该组是一组单选(可以为多个) subMenuGender.setGroupCheckable(GENDER_GROUP, true, true); //建立爱好菜单组 SubMenu subMenuHobby = menu.addSubMenu(MAIN_GROUP, MENU_HOBBY, 0, R.string.hobby); subMenuHobby.setIcon(R.drawable.hobby); subMenuHobby.setHeaderIcon(R.drawable.hobby); hobbies[0] = subMenuHobby.add(HOBBY_GROUP, MENU_HOBBY_BASKETBALL, 0, R.string.basketball); //Icons只能在图标菜单中显示;它们在扩展菜单和子菜单中不可见,也就是 //SubMenu中的MenuItem不支持icon,所以下面 setIcon是不可见的 //basketball.setIcon(R.drawable.basketball); //为此项添加复选按钮 hobbies[0].setCheckable(true); hobbies[0].setChecked(true); //设置为选中状态 hobbies[1] = subMenuHobby.add(HOBBY_GROUP, MENU_HOBBY_FOOTBALL, 0, R.string.football); hobbies[1].setCheckable(true); hobbies[2] = subMenuHobby.add(HOBBY_GROUP, MENU_HOBBY_VOLLEYBALL, 0, R.string.volleyball); hobbies[2].setCheckable(true); MenuItem ok = menu.add(GENDER_GROUP+2, MENU_OK, 0, R.string.OK); OnMenuItemClickListener listener = new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { getSubMenuStr(); return true; } }; ok.setOnMenuItemClickListener(listener); //设置快捷键 ok.setAlphabeticShortcut('o'); return true; } @Override public boolean onOptionsItemSelected(MenuItem menuItem) { switch(menuItem.getItemId()) { case MENU_GENDER_MALE: case MENU_GENDER_FEMALE: menuItem.setChecked(true); getSubMenuStr(); break; case MENU_HOBBY_BASKETBALL: case MENU_HOBBY_FOOTBALL: case MENU_HOBBY_VOLLEYBALL: menuItem.setChecked(!menuItem.isChecked()); getSubMenuStr(); break; } return true; } private void getSubMenuStr() { StringBuffer result = new StringBuffer("你选择的性别为: "); if(male.isChecked()) { result.append("男"); } else { result.append("女"); } StringBuffer hobbyStr = new StringBuffer(); for(MenuItem item:hobbies) { if(item.isChecked()) { hobbyStr.append(item.getTitle() + "、"); } } if(hobbyStr.length() > 0) { result.append(",你的爱好为:") .append(hobbyStr.substring(0, hobbyStr.length()-1)) .append("。/n"); } else { result.append("。/n"); } EditText editText = (EditText) findViewById(R.id.editText); editText.append(result); } }
第五步:
/OptionsMenuDemo/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.myoptionsmenu.demo" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".OptionsMenuActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="8" /> </manifest>
效果图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/13dc9b8b4a3685eaa4f6a222ca40442d.gif)
初始化的时候(如要出现菜单,需按下Menu键)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/082adcdfd302dcafa88c95791cced525.gif)
按下MENU键后,菜单弹出
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/5f41d058cc196a173032cb768412c091.gif)
性别子菜单项
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/a9e433cc9310cec08d0266b99e7bfd76.gif)
爱好子菜单项
下载地址:
http://download.csdn.net/source/3207129
相关文章推荐
- Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
- Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
- android Menu 选项菜单示例
- android Menu 选项菜单示例
- 菜单Menu、选项菜单OptionsMenu、上下文菜单ContextMenu、子菜单SubMenu - duanxz
- 4、从头学Android之Menu选项菜单
- Android开发之多个Activity跳转(Intent)及菜单用法(menu)
- AndroidAnnotations——Handling options menu处理选项菜单
- android开发步步为营之29:选项菜单OptionsMenu的用法
- android系统menu菜单选项设置
- Android中选项菜单(OptionMenu)的创建方法
- Android OptionMenu (选项菜单) 和 ContextMenu (上下文菜单) 、 SubMenu (子菜单)
- Android中的Menu功能菜单-OptionsMenu[选项菜单]
- Menu---android菜单(menu)用法
- Android菜单(SubMenu)用法小结
- Android移动开发-选项菜单和子菜单(SubMenu)的实现
- android菜单(menu)用法
- Android-menu键选项菜单的实现
- AndroidAnnotations——Handling options menu处理选项菜单
- Android之菜单选项子菜单submenu(二)