android创建菜单的两种方式_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2288 | 回复: 0   主题: android创建菜单的两种方式        下一篇 
xuefeng
注册用户
等级:上士
经验:315
发帖:69
精华:0
注册:2011-8-17
状态:离线
发送短消息息给xuefeng 加好友    发送短消息息给xuefeng 发消息
发表于: IP:您无权察看 2015-5-7 9:57:23 | [全部帖] [楼主帖] 楼主

如同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:

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论