11. android 选项菜单(此处为icon menu)--Menu,SubMenu,MenuItem的用法

目录结构:

11. android 选项菜单(此处为icon menu)--Menu,SubMenu,MenuItem的用法_第1张图片

 

第一步:

/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>

 

 

效果图:

 

 11. android 选项菜单(此处为icon menu)--Menu,SubMenu,MenuItem的用法_第2张图片

              初始化的时候(如要出现菜单,需按下Menu键)

 

11. android 选项菜单(此处为icon menu)--Menu,SubMenu,MenuItem的用法_第3张图片

                         按下MENU键后,菜单弹出

 

11. android 选项菜单(此处为icon menu)--Menu,SubMenu,MenuItem的用法_第4张图片

               性别子菜单项

11. android 选项菜单(此处为icon menu)--Menu,SubMenu,MenuItem的用法_第5张图片

                     爱好子菜单项

 

 下载地址:

http://download.csdn.net/source/3207129

 

你可能感兴趣的:(android,String,layout,application,menu,encoding)