Android Menus

简介:

1.Options Menu.

 

通过按下手机上的MENU键,可以打开Options MenuOptions Menu最多只能在屏幕最下面显示6个菜单项,称为Icon Menu.如果添加了多于6个的菜单项,将通过"More"菜单项显示,这种称为Expanded Menu.Options Menu第一次被打开时,系统将调用ActivityonCreateOptionsMenu(Menu menu)方法,在这个方法中可以通过配置一个XML文件,或者调用Menuadd()方法来添加你想要的MenuMenuadd()方法将返回一个MenuItem对象,你用通过这个对象来配置一些其他属性。比如:iconshortcutintentMenuadd()方法很多,要注意的是itemId这个参数,它的唯一性。

 

当选择了一个Options Menu,会调用onOptionsItemSelected(MenuItem item)方法。如果想修改Options Menu,需要重写onPrepareOptionsMenu()方法。

 

方式一,用add()添加:

 

  1. /* Creates the menu items */ 
  1. public boolean onCreateOptionsMenu(Menu menu) { 
  1.     menu.add(0, MENU_NEW_GAME, 0"New Game"); 
  2.     menu.add(0, MENU_QUIT, 0"Quit").setIcon(R.drawable.menu_quit_icon); 
  1.     return true
  1. } 
  2.  
  1. /* Handles item selections */ 
  1. public boolean onOptionsItemSelected(MenuItem item) { 
  1.     switch (item.getItemId()) { 
  1.     case MENU_NEW_GAME: 
  1.         newGame(); 
  1.         return true
  1.     case MENU_QUIT: 
  1.         quit(); 
  2.         return true
  3.     } 
  1.     return false
  1. } 

 

 

方式二,通过XML文件添加:

res/menu/下新建options_menu.xml文件:

 

Xml代码 

  1. <menu xmlns:android="http://schemas.android.com/apk/res/android"> 
  1.     <item android:id="@+id/new_game" 
  1.           android:title="New Game" /> 
  1.     <item android:id="@+id/quit" 
  2.           android:title="Quit" /> 
  1. </menu> 

 

onCreateOptionsMenu()方法中,我们这样写:

 

Java代码 

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

 

 

2.Context Menu.

 

它需要注册到某个View对象上,当长按这个View大概2秒时间,会出现这个Context Menu。为某个View注册Context Menu是用registerForContextMenu(View view)方法来实现。Context Menu在显示前都会调用onCreateContextMenu来生成menuonContextItemSelected用来处理选中的菜单项。

 

注意:Context Menu不支持iconsshortcut keys.

 

Java代码 

  1. public void onCreateContextMenu(ContextMenu menu, View v, 
  1.                                 ContextMenuInfo menuInfo) { 
  2.   super.onCreateContextMenu(menu, v, menuInfo); 
  1.   menu.add(0, EDIT_ID, 0"Edit"); 
  1.   menu.add(0, DELETE_ID, 0,  "Delete"); 
  2. } 
  3.  
  1. public boolean onContextItemSelected(MenuItem item) { 
  1.   AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
  2.   switch (item.getItemId()) { 
  1.   case EDIT_ID: 
  1.     editNote(info.id); 
  1.     return true
  2.   case DELETE_ID: 
  1.     deleteNote(info.id); 
  1.     return true
  1.   default
  1.     return super.onContextItemSelected(item); 
  1.   } 
  1. } 

 

注册这个Context Menu:

 

registerForContextMenu(getListView()); 

 

这里的 getListView()ListActivity的方法,它将返回一个ListView.记住任何一个View对象都可以注册一个Context Menu

 

 

3.Submenus 

 

  1. public boolean onCreateOptionsMenu(Menu menu) { 
  1.   boolean result = super.onCreateOptionsMenu(menu); 
  1.  
  2.   SubMenu fileMenu = menu.addSubMenu("File"); 
  3.   SubMenu editMenu = menu.addSubMenu("Edit"); 
  4.   fileMenu.add(0,NEW_ID,0,"new"); 
  5.   fileMenu.add(0,OPEN_ID,0,"open"); 
  6.   fileMenu.add(0,SAV_ID,0,"save"); 
  7.   editMenu.add(0,UNDO_ID,0,"undo"); 
  8.   editMenu.add(0,REDO_ID,0,"redo"); 
  9.  
  10.   return result; 
  11. } 

 

 

4.Menu Features

 

Menu groups 菜单项分组的功能:

在用Menuadd()方法时,通过参数groupId的设置可以实现分组。setGroupVisible()用来显示或者隐藏你的菜单组。setGroupEnabled()用来启用或者禁用你的菜单组。setGroupCheckable()用来设置你的菜单项是否可选。 setGroupCheckable()方法有三个参数int group, boolean checkable, boolean exclusive。第一个参数是要设置的组,第二个参数是否可选,第三个参数为true表示单选,false表示多选。

Shortcut keys 快捷键:

我们还可以设置快捷键。使用setAlphabeticShortcut(char),setNumericShortcut(int),setShortcut(char,int)可以设置字符,数字,组合(字符+数字)键。注意:Context Menu不能添加快捷键。

 

本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2010/07/12/1776014.html,如需转载请自行联系原作者


相关文章
|
XML Java Android开发
|
8天前
|
编解码 Android开发 iOS开发
探索安卓与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的世界中,安卓和iOS是两大主导力量。本文深入探讨了这两个平台在开发过程中的主要差异,并分析了这些差异如何影响项目的成功。通过对比分析,我们旨在为开发者提供决策时的参考,帮助他们根据项目需求和目标用户群体做出最合适的平台选择。
|
1天前
|
JavaScript 前端开发 Java
FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
IT寒冬使APP开发门槛提升,安卓程序员需转型。选项包括:深化Android开发,跟进Google新技术如Kotlin、Jetpack、Flutter及Compose;研究Android底层框架,掌握AOSP;转型Java后端开发,学习Spring Boot等框架;拓展大前端技能,掌握JavaScript、Node.js、Vue.js及特定框架如微信小程序、HarmonyOS;或转向C/C++底层开发,通过音视频项目如FFmpeg积累经验。每条路径都有相应的书籍和技术栈推荐,助你顺利过渡。
10 3
FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
|
5天前
|
Java Android开发 iOS开发
探索安卓与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的世界中,选择正确的平台是关键。本文通过比较安卓和iOS开发的核心差异,揭示平台选择如何影响应用的性能、用户体验和市场覆盖。我们将深入探讨各自的开发环境、编程语言、用户界面设计原则以及发布流程,以帮助开发者和企业做出明智的决策。
25 9
|
2天前
|
移动开发 开发工具 Android开发
探索安卓与iOS开发的差异:技术选择的影响
【8月更文挑战第17天】 在移动应用开发的广阔天地中,安卓和iOS两大平台各领风骚。本文通过比较这两个平台的编程语言、开发工具及市场策略,揭示了技术选择对开发者和产品成功的重要性。我们将从开发者的视角出发,深入探讨不同平台的技术特性及其对项目实施的具体影响,旨在为即将步入移动开发领域的新手提供一个清晰的指南,同时给予资深开发者新的思考角度。
|
5天前
|
Java 开发工具 Android开发
探索安卓与iOS开发的差异:从新手到专家的旅程
在数字时代的浪潮中,移动应用开发成为了连接世界的桥梁。本文将带你走进安卓与iOS这两大移动操作系统的开发世界,通过比较它们的编程语言、开发工具和环境、用户界面设计以及市场分布等方面,揭示各自的独特之处。无论你是初涉编程的新手,还是寻求进阶的开发者,这篇文章都将为你提供宝贵的洞见,助你在移动应用开发的征途上一帆风顺。
19 5
|
3天前
|
vr&ar Android开发 iOS开发
探索安卓和iOS开发的未来趋势
在移动应用开发的广阔天地里,安卓和iOS两大平台如同双子星座般璀璨夺目。随着技术的不断进步,这两个平台的开发趋势也在悄然发生着变化。本文将带你一探究竟,看看未来安卓和iOS开发将会迎来哪些令人激动的新特性和挑战。让我们一起跟随技术的脚步,开启这场探索之旅吧!
|
4天前
|
移动开发 Java Android开发
安卓与iOS开发:异同探析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据半壁江山。本文旨在深入探讨这两个平台在开发环境、编程语言、用户界面设计、性能优化及市场分布等方面的异同,为开发者提供实用的比较视角和决策参考。通过对比分析,我们不仅能更清晰地认识到各平台的特性,还能洞察未来移动开发的可能趋势。
|
5天前
|
Java 开发工具 Android开发
探索Android和iOS开发的差异与挑战
在移动应用开发的广阔天地中,Android和iOS两大平台如同两座高峰,各自拥有独特的风景。本文将深入探讨这两个平台的开发差异,包括编程语言、开发工具、用户界面设计等方面,并分析开发者面临的挑战。无论你是初涉移动应用开发的新手,还是已经在这条路上走了很远的老手,这篇文章都将为你提供新的视角和思考。让我们一起走进这个充满创新与挑战的世界,发现那些隐藏在代码背后的秘密。
|
9天前
|
Java Android开发 Swift
安卓与iOS开发:异同与未来趋势
在移动应用开发的广阔天地中,安卓和iOS两大平台各领风骚。本文将深入浅出地探讨这两大系统在开发过程中的异同点,以及它们如何影响开发者的选择和未来的技术走向。从编程语言到用户界面设计,再到市场分布和盈利模式,我们将逐一剖析,为即将踏入或已在这片热土上耕耘的开发者提供一份清晰的指南。