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

kangzye的博客

加Q群25382780切磋java,加19360923群研究JavaScript

 
 
 

日志

 
 

android学习-菜单  

2010-12-05 23:50:28|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
andorid中菜单大致分为2种,选项菜单OptionMenu 和 上下文菜单ContextMenu
Menu是针对Activity的,ContextMenu是针对View控件的。
Menu可以通过手机的menu按键打开,ContextMenu可以通过在注册了的view控件上常按(大约2秒)来打开。
ContextMenu 继承至Menu。
当手机上的menu被按下时,当前Activity的public boolean onCreateOptionsMenu(Menu menu)方法将被调用,我们为方法中传入的menu添加菜单选项即可实现我们要的功能如:
public class MainActivity extends Activity{
          //.........
          public boolean onCreateOptionsMenu(Menu menu){
                  menu.add("保存");
                  menu.add("删除");
                  SubMenu sm=menu.addSubMenu("其他");
                  sm.add("复制内容到粘贴板");
                  sm.add("全选文本");
          }
}
上面是个简单的例子,当点击手机的menu按键是会在手机底部出现‘保存’、‘删除’、‘其他’三个选项,点击‘其他’时菜单会关闭并显示另一种菜单显示方式来显示子菜单‘复制内容到粘贴板’和‘全选文本’两个子选项。
上下文菜单ContextMenu的显示也是在Activity上重写一个方法,
方法是:public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)
上面说过ContextMenu是针对具体View控件的,那么如何关联呢?就是通过Activity上注册的方法:
public void registerForContextMenu(View v); 调用 Activit的这个方法将你要添加上下文菜单的控件注册上就可以了。那么如果注册了多个控件,而都是调用同一个public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)来显示菜单,那么如何且别呢?答案是根据传入的 View 对象来判断当前是右击(长按)了哪个控件,然后显示不同的菜单。
上下文菜单选项的添加和OptionMenu 一样,也是往传入的ContextMenu 里添加选项即可,其也可以添加子菜单。和上面是一样的。
每个菜单选项(MenuItem才行,SubMenu不行)(不管是OptionMenu 的还是 ContextMenu 的)都可以监听点击事件:
public boolean onCreateOptionsMenu(Menu menu){
      MenuItem mi=menu.add("选项");
      MenuItem.OnMenuItemClickListener om=new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                alert(item.toString());//弹出消息
                return false;
            }
        };
        mi.setOnMenuItemClickListener(om);
}
所以可以通过上面的形式来处理菜单选择后的处理工作。
也可以通过重写Activity 的public boolean onMenuItemSelected(int featureId, MenuItem item) 方法来处理选项选中后的工作。
这个方法在OptionMenu 的选项 或者 ContextMenu的选项被选中后都会调用这个方法,但是被选中的控件会被传入到方法中,于是可以通过传入的控件来区分要做什么事情。
  评论这张
 
阅读(822)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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