博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android_文档学习_UI_creating menus
阅读量:7091 次
发布时间:2019-06-28

本文共 3747 字,大约阅读时间需要 12 分钟。

Creating Menus

android 菜单包括三种.Options Menu , Context Menu   和Submenu.

本文完整代码 CSDN下载频道 :http://download.csdn.net/source/2900952 ,

1.Options Menu(选项菜单)
hi
@方法1   
需要重写public boolean onCreateOptionsMenu(Menu menu)和 public boolean onOptionsItemSelected(MenuItem item)方法, 可用如下代码,添加menuitem

[java]

@Override public boolean onOptionsItemSelected(MenuItem item) {  // TODO Auto-generated method stub switch(item.getItemId()) {  case 1://id可以是用menu.add方法生成的数字,也可是用xml文件生成的R.id.XX             System.out.println("new clicked");  return true;          }  return super.onOptionsItemSelected(item);      }  @Override public boolean onCreateOptionsMenu(Menu menu) {  // TODO Auto-generated method stub         menu.add(0, 1, 1, "new");          menu.add(0, 2, 2, "open");          menu.add(0, 3, 3, "close");          menu.add(0, 4, 4, "start");          menu.add(0, 5, 5, "about");          menu.add(0, 6, 6, "restart");          menu.add(0, 7, 7, "reopen");          SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单");          Resources res = getBaseContext().getResources();          sub.setIcon(res.getDrawable(R.drawable.icon));          sub.setHeaderIcon(res.getDrawable(R.drawable.icon));          sub.add(1, 3, 0, "Menu A1");          sub.add(1, 4, 1, "Menu A2");  return super.onCreateOptionsMenu 

@方法2
在xml文件中定义好

[xhtml]

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/new_game" android:icon="@drawable/ic_new_game" android:title="@string/new_game" /> <item android:id="@+id/quit" android:icon="@drawable/ic_quit" android:title="@string/quit" /> </menu>

并在java文件中.调用如下方法

[java]

@Override public boolean onCreateOptionsMenu(Menu menu) {      MenuInflater inflater = getMenuInflater();      inflater.inflate(R.menu.game_menu, menu);  return true;  } 

2.Context Menu(上下文菜单,类似windows下的右键菜单)
hi
(有点类似android中的dialog对话框.)
一般,contextMenu多用于ListView 视图中,当用户持续按住一个listItem的时候.就可以弹出ContextMenu来.并执行需要的功能.
可用如下代码生成contextMenu: 并需要调用
registerForContextMenu()对contextMenu进行注册;

[java]

  1. @Override
  2. public void onCreateContextMenu(ContextMenu menu, View v, 
  3.             ContextMenuInfo menuInfo) { 
  4. // TODO Auto-generated method stub
  5.         menu.setHeaderTitle("ContextMenu");    
  6.         menu.add(0, 0, 0, "contextMenuItem 0"); 
  7.         menu.add(0, 1, 0, "contextMenuItem 1");   
  8. super.onCreateContextMenu(menu, v, menuInfo); 
  9.     } 
  10. //长按菜单响应函数
  11. @Override
  12. public boolean onContextItemSelected(MenuItem item) { 
  13.         setTitle("contextMenuItem"+item.getItemId()+"Clicked");  
  14. return super.onContextItemSelected(item); 
  15.     } 

我在网上发现另一种不用调用 registerForContextMenu()的方法代码如下:

[java]

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {  @Override public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {                  menu.setHeaderTitle("ContextMenu");                     menu.add(0, 0, 0, "contextMenuItem0");                  menu.add(0, 1, 0, "contextMenuItem1");                 }          }); 

直接将list绑定到list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
接口并在其中用匿名类写相应的代码.
3.Submenu(子菜单,类似windows下,右键菜单中,黑色三角形指向的菜单)
he
当然也可以用两种方式生成.一种是通过xml文件,一种是java中直接写代码. android的文档中,只是简单的描述了下,用xml文件设的子菜单.
我用的后一种方法.代码如下:

[java]

  1. @Override
  2. public boolean onCreateOptionsMenu(Menu menu) { 
  3. // TODO Auto-generated method stub
  4.     SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单"); 
  5.     Resources res = getBaseContext().getResources(); 
  6.     sub.setIcon(res.getDrawable(R.drawable.icon)); 
  7.     sub.setHeaderIcon(res.getDrawable(R.drawable.icon)); 
  8.     sub.add(1, 3, 0, "Menu A1"); 
  9.     sub.add(1, 4, 1, "Menu A2"); 
  10. return super.onCreateOptionsMenu(menu); 

菜单选项还有许多其他的特性. 包括,menu Groups,将按钮分组,菜单分组,可以方便的将组中的菜单visiable属性,Enable属性,checkable属性,一齐改变.
包括 Checkable menu items,用类似checkbox的属性或者radiobutton的属性.
包括Shortcut keys(快捷键),
包括intent for menu items(android中用于activity间传输数据的一种方式).
包括Dynamically adding Intents(动态增加intent).
包括Allowing your Activity to be added to menus(允许activty被增加到多个菜单项中)等.
本文完整代码CSDN下载频道:http://download.csdn.net/source/2900952 , 由于小生初学android,好多问题都是一知半解.希望看到本文的同学.能够多多支持.并增加交流.

转载地址:http://mfiql.baihongyu.com/

你可能感兴趣的文章
JSON.parse()和JSON.stringify()
查看>>
Github上如何在组织中的代码仓库里,为组织中的小组创建Pull Request(拉取请求/下载请求)?...
查看>>
Feign 与 Hystrix
查看>>
MongoDB之分片集群(Sharding)
查看>>
阿里巴巴的AI算法程序媛是怎样的一种存在?
查看>>
Pygame常用方法
查看>>
java基础学习_概述_day01总结
查看>>
新旧之争,JDK 团队发起 Project Skara 引争议
查看>>
行业大咖“论剑上海”, 云服务究竟引发哪些行业变革
查看>>
解决linux删除文件后空间没有释放问题
查看>>
Mysql基础知识学习
查看>>
WinSCP 5.13.9 发布,Windows 图形化 SFTP 客户端
查看>>
物联网数据分析能为制造业带来什么?
查看>>
淘宝成“新生代海归”创业首选:超两成头部卖家有海外背景
查看>>
Theano 中文文档 0.9 - 4. 要求
查看>>
webstorm9.0.3 注册码
查看>>
iptables从入门到放弃
查看>>
PHP函数中默认参数的的写法
查看>>
Linux TCP/IP网络管理工具:net-tools VS iproute2
查看>>
linux
查看>>