如同activity一样,创建android设备的选项菜单也有代码创建和mvc模式创建,即用xml定义菜单的方式两种。
直接创建比较方便:
// public static final int MENU_ITEM_FIRSTPAGE = Menu.FIRST;
// public static final int MENU_ITEM_BACKWARD = Menu.FIRST + 1;
// public static final int MENU_ITEM_ABOUT = Menu.FIRST + 2;
// public static final int MENU_ITEM_PREFERENCES = Menu.FIRST + 3;
定义菜单项ID。
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
// menu.add(0,MENU_ITEM_FIRSTPAGE,0,R.string.menu_firstpage).setShortcut('3','a')
// .setIcon(android.R.drawable.ic_menu_mylocation);
// menu.add(0,MENU_ITEM_BACKWARD,0,R.string.menu_backward).setShortcut('4','b')
// .setIcon(android.R.drawable.ic_menu_revert);
// menu.add(0,MENU_ITEM_PREFERENCES,0,R.string.menu_preferences).setShortcut('5','c')
// .setIcon(android.R.drawable.ic_menu_preferences);
// menu.add(0,MENU_ITEM_ABOUT,0,R.string.menu_about).setShortcut('6','d')
// .setIcon(android.R.drawable.ic_menu_more);
在onCreateOptionsMenu中添加菜单。第一参数为组ID,第二为菜单ID,R.string.menu_firtstpage为字符串资源,定义菜单显示的文本。setShortcut定义菜单热键,setIcon定义图标资源文件。android.R.drawable.ic_menu_mylocation这些是系统包中预定义的标准图标项,可直接拿来使用。
然后就是设置菜单触发行为:
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case MENU_ITEM_FIRSTPAGE: //前面定义的菜单ID
// Launch activity to insert a new item
// startActivity(new Intent(Intent.ACTION_INSERT, getIntent().getData()));
WebView wv=(WebView)findViewById(R.id.webkitWebView1);
wv.getSettings().setBuiltInZoomControls(true);
wv.getSettings().setDefaultFontSize(10);
Log.v("MENU_ITEM_FIRSTPAGE", "aaaaa");
return true;
在onOptionsItemSelected对菜单ID进行判断,并执行相应动作。动作执行完后,需return true;
以菜单配置文件xml方式制作菜单。
首先定义菜单xml文件:
在res下创建menu目录。此时在包管理器中点右键,创建:其它:android xml文件,此时xml文件的类型会默认为menu。打开文件,可对其进行添加菜单项操作。
文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/MENUGRP">
<item android:title="@string/menu_firstpage" android:id="@+id/MENU_ITEM_FIRSTPAGE" android:icon="@android:drawable/ic_menu_mylocation"></item>
<item android:title="@string/menu_backward" android:id="@+id/MENU_ITEM_BACKWARD" android:icon="@android:drawable/ic_menu_revert"></item>
<item android:title="@string/menu_preferences" android:id="@+id/MENU_ITEM_PREFERENCES" android:icon="@android:drawable/ic_menu_preferences"></item>
<item android:title="@string/menu_about" android:id="@+id/MENU_ITEM_ABOUT" android:icon="@android:drawable/ic_menu_more"></item>
</group>
</menu>
基本对应于代码方式创建菜单项时的id,标题,图标等等。
然后在
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
中生成菜单。
最后是在
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.MENU_ITEM_FIRSTPAGE:
中调用菜单响应事件。由于此处菜单ID在资源文件中定义,则可直接用R.id.MENU_ITEM_FIRSTPAGE:
--转自