注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

Android之OptionMenu  

2011-11-17 21:45:43|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关于OptionMenu重要的是两个方面:
1.创建Menu 并添加 Optiion
    通过方法public boolean onCreateOptionsMenu(Menu menu) 创建。
    添加Option 有两种方式:
                     a. 使用add方法
                            // 1. use add method
                            // argumants: group_id, itemId, order, title
                            menu.add(0, 1, 0, "option 01");

                            当然也可以添加图片icon
                            menu.add(0, 2, 0, "option 02").setIcon(R.drawable.ic_launcher);
                     b. 使用XML (menu.xml 定义在res/menu 目录中
                            MenuInflater inflater = getMenuInflater();
                            inflater.inflate(R.menu.menu, menu);


     option最多显示6个,超过6个会按扩展菜单显示。(可以看后来的运行结果,就明白了)             
2.处理选项事件
     通过方法 public boolean onOptionsItemSelected(MenuItem item) 处理
     你可以通过 item.getItemId() 取得id
                       item.getGroupId()取得group_id
                       item.getTitle()取得Title

实例:OptionMenuActivity.java

package com.platform;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class OptionMenuActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

// create option menu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// two method to add menu option
// 1. use add method
// argumants: group_id, itemId, order, title
menu.add(0, 1, 0, "option 01");
// add icon for option 02
menu.add(0, 2, 0, "option 02").setIcon(R.drawable.ic_launcher);
menu.add(1, 11, 0, "option 11");
menu.add(1, 12, 0, "option 12");
menu.add(2, 21, 0, "option 21");
menu.add(2, 22, 0, "option 22");
menu.add(2, 23, 0, "option 23");
menu.add(2, 24, 0, "option 24");

// 2. define xml file (in res/menu )
/*
* MenuInflater inflater = getMenuInflater();
* inflater.inflate(R.menu.menu, menu);
*/

return true;
}

// handle the option
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
showAlert((String) item.getTitle());
return true;
case 2:
showAlert((String) item.getTitle());
return true;
case 11:
showAlert((String) item.getTitle());
return true;
case 12:
showAlert((String) item.getTitle());
return true;
case 21:
showAlert((String) item.getTitle());
return true;
case 22:
showAlert((String) item.getTitle());
return true;
case 23:
showAlert((String) item.getTitle());
return true;
case 24:
showAlert((String) item.getTitle());
return true;
}
return false;
}

// alert
private void showAlert(String message) {
new AlertDialog.Builder(this).setTitle("Alert")
.setMessage("click" + " " + message)
.setPositiveButton("close", null).show();
}
}

运行结果:
多余6个 第6个显示more

Android之OptionMenu - 星期五 - 星期五
 多余的用扩展菜单显示
Android之OptionMenu - 星期五 - 星期五
 
Android之OptionMenu - 星期五 - 星期五
 
这时候对Order参数做调整

menu.add(0, 1, 0, "option 01");
// add icon for option 02
menu.add(0, 2, 0, "option 02").setIcon(R.drawable.ic_launcher);
menu.add(1, 11, 4, "option 11");
menu.add(1, 12, 4, "option 12");
menu.add(2, 21, 2, "option 21");
menu.add(2, 22, 3, "option 22");
menu.add(2, 23, 1, "option 23");
menu.add(2, 24, 1, "option 24");


Android之OptionMenu - 星期五 - 星期五

补充资料:
public void onOptionsMenuClosed(Menu menu)
菜单关闭后发生的动作。
public boolean onPrepareOptionsMenu(Menu menu)
选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。
public boolean onMenuOpened(int featureId, Menu menu)
单打开后发生的动作。

@Override
public void onOptionsMenuClosed(Menu menu) {
Log.i("OptionMenuActivity.class","The Method onOptionsMenuClosed is running.");
}
//
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
Log.i("OptionMenuActivity.class","The Method onPrepareOptionsMenu is running.");
return true;
}
//
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
Log.i("OptionMenuActivity.class","The Method onMenuOpened is running.");
return true;
}

运行后,点击Menu,查看logcat
  评论这张
 
阅读(2334)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017