示例:xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#ffffff" >
<EditText
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加菜单与子菜单" />
</LinearLayout>
java代码:
package com.example8.www;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.EditText;
import android.widget.Toast;
public class MenuExampleActivity extends Activity {
//定义字体大小的标示
final int FONT_9 = 0x111;
final int FONT_11 = 0x112;
final int FONT_13 = 0x113;
final int FONT_15 = 0x114;
final int FONT_17 = 0x115;
//定义普通菜单项标示符
final int PLAIN_ITEM = 0x11b;
//定义字体颜色菜单项的标示符
final int FONT_BLUE = 0x116;
final int FONT_YELLOW = 0x117;
final int FONT_RED = 0x118;
private EditText edit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edit = (EditText)findViewById(R.id.txt);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
//向Menu中添加字体大小的子菜单
SubMenu fontMenu = menu.addSubMenu("字体大小");
//设置菜单的图标
fontMenu.setIcon(R.drawable.tp_1);
//设置菜单头的图标
fontMenu.setHeaderIcon(R.drawable.tp_2);
//设置菜单头的标题
fontMenu.setHeaderTitle("选择字体大小");
fontMenu.add(0,FONT_9,0,"9号字体");
fontMenu.add(0,FONT_11,0,"11号字体");
fontMenu.add(0,FONT_13,0,"13号字体");
fontMenu.add(0,FONT_15,0,"15号字体");
fontMenu.add(0,FONT_17,0,"17号字体");
//向menu中添加普通菜单项
menu.add(0,PLAIN_ITEM,0,"普通菜单项");
//向menu添加文字颜色菜单项
SubMenu colorMenu = menu.addSubMenu("字体颜色");
colorMenu.setIcon(R.drawable.tp_2);
//设置菜单头的标题
colorMenu.setHeaderTitle("文字颜色");
colorMenu.add(0,FONT_BLUE,0,"蓝色");
colorMenu.add(0,FONT_YELLOW,0,"黄色");
colorMenu.add(0,FONT_RED,0,"红色");
return super.onCreateOptionsMenu(menu);
//菜单项被单击后的回调方法
}
@Override
public boolean onOptionsItemSelected(MenuItem im) {
switch(im.getItemId()){
case FONT_9:
edit.setTextSize(9*2);
break;
case FONT_11:
edit.setTextSize(11*2);
break;
case FONT_13:
edit.setTextSize(13*2);
break;
case FONT_15:
edit.setTextSize(15*2);
break;
case FONT_17:
edit.setTextSize(17*2);
break;
case FONT_BLUE:
edit.setTextColor(Color.BLUE);
break;
case FONT_YELLOW:
edit.setTextColor(Color.YELLOW);
break;
case FONT_RED:
edit.setTextColor(Color.RED);
break;
case PLAIN_ITEM:
Toast.makeText(MenuExampleActivity.this,"你单击了菜单项",Toast.LENGTH_LONG).show();
}
return true;
}
@Override
public void onOptionsMenuClosed(Menu menu){
Toast.makeText(getApplicationContext(), "菜单已关闭",Toast.LENGTH_LONG).show();
super.onOptionsMenuClosed(menu);
}
}
知识点:1.创建菜单步骤:重新onCreateOptionsMenu(Menu menu)方法并在其中进行以下步骤:
a.SubMenu subMenu1 = menu.addSubMenu("要创建的菜单名称1")
b.使用subMenu1.add(int groupId,int itemId,int order,charAequence title)添加子菜单,例如上例。itemId是该子菜单的唯一标示符,以后操作该菜单要用到。
c.重复a.b添加其他菜单项
2.onOptionsItemSelected方法:该方法用于设置当选项菜单被选中时执行的操作
3.onOptionsItemClosed方法:设置当菜单被关闭或退出时的执行操作
4.MenuItem菜单常用方法:
a.setIcon方法:设置菜单显示的图标
b.setAlphabeticShortCut方法:设置字母快捷键
d.setNumericShortCut方法:设置数字快捷键
e.setshortcut方法:设置字母+数字快捷键
f.setOnMenuItemClickListener方法:用于设置菜单项单击监听器