Menu
Android支持的Menu有以下几种:
1.常规菜单
2.子菜单
3.上下文菜单
4.图标菜单
5.辅助菜单
6.交替菜单
菜单不仅作为Java对象,还表示为资源,我们可以通过XML制作自己的菜单,然后通过资源id来使用.
每个Activity都能拥有一个菜单(android.view.Menu),而这个菜单中能自由的扩展子菜单(android.view.SubMenu)或包含菜单项(android.view.MenuItem).
回调函数:onCreateOptionsMenu()和onOptionsItemSelected()分别用于菜单的创建和菜单项的选择.
菜单的创建
菜单项的响应
1.通过onOptionsItemSelected()来响应
2.通过监听器来响应
设置MenuItem的监听器
onMenuItemClick()在点击菜单时调用,如果onMenuItemClick()返回true,则会停止其他回调的执行,包括onOptionsItemSelected().就是说,监听器的优先级比onOptionsItemSelected()的优先级高.
3.通过Intent来响应
使用MenuItem的setIntent(intent)方法,将菜单项与Intent关联,当Intent与菜单项关联后,如果没有其他方法来处理菜单项时,默认将会使用Intent的startActivity(intent)来调用该intent.
图标菜单
Android中除了使用文本菜单,还可以使用图标菜单.
但使用图标菜单会有一些限制:
1.图标菜单没法用于扩展菜单.
2.图标菜单不支持菜单项单选标记
3.与文本菜单一样,如果图标菜单中的文字过长,将会进行截断.
创建图标菜单的方法很简单,只要使用MenuItem的setIcon()方法即可.
子菜单
通过Menu的addSumMenu()方法可以轻松的往菜单添加子菜单,返回SubMenu对象,但没法往子菜单中在添加子菜单.
另外,如果一个图标菜单作为子菜单,则其图标会被忽略.
上下文菜单
在Android中,通过长按指令来调出上下文菜单.
上下文菜单与常规菜单不同之处在于:常规菜单式基于Activity的,一个Activity拥有一个菜单,而上下文菜单式基于视图的,因此一个Activity可以拥有多个上下文菜单.
通过Activity的onCreateContextMenu()方法来激活上下文菜单.它的作用类似于onCreateOptionsMenu().该回调函数返回上下文菜单对应的视图对象.
另外上下文菜单不同于常规菜单的地方在于:常规菜单是Activity自动创建的.而上下文菜单是需要手动注册的,想哪个视图拥有上下文菜单就对哪个视图进行注册.通过Activity的registerForContextMenu(view)来实现.
为视图注册后,android会调用onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)
使用onContextItemSelected()方法来响应上下文项的单击事件.
这里只有item可以使用,不明白为什么没有提供view,如果两个上下文菜单项目的itemid相同,则上面的判断就有误了.
交替菜单
交替菜单的意思就是允许一个应用程序使用另外一个应用程序的菜单.
动态的菜单
假如希望菜单的内容是动态的,则应该使用onPrepareOptionsMenu()代替onCreateOptionsMenu(),onPrepareOptionMenu()在每次使用菜单时都会调用,这时就能根据实际情况修改菜单内容.
使用XML加载菜单
菜单xml一般放在/res/menu目录下,使用文件名作为资源id,下面是一个menu示例,文件名位mymenu.xml
接着是如何使用这个menu资源,Android提供了一个类:MenuInflater来载入xml菜单资源.
Android支持的Menu有以下几种:
1.常规菜单
2.子菜单
3.上下文菜单
4.图标菜单
5.辅助菜单
6.交替菜单
菜单不仅作为Java对象,还表示为资源,我们可以通过XML制作自己的菜单,然后通过资源id来使用.
每个Activity都能拥有一个菜单(android.view.Menu),而这个菜单中能自由的扩展子菜单(android.view.SubMenu)或包含菜单项(android.view.MenuItem).
回调函数:onCreateOptionsMenu()和onOptionsItemSelected()分别用于菜单的创建和菜单项的选择.
菜单的创建
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu);//调用父类方法创建系统菜单 menu.add(0, 1, 0, "add"); menu.add(0, 2, 1, "item"); menu.add(0, 3, 2, "del"); return true;//返回true菜单才能显示 }
菜单项的响应
1.通过onOptionsItemSelected()来响应
@Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case 1: return true;//返回true跳出处理 case 2: return true; } return super.onOptionsItemSelected(item);//使用父类的处理方法,返回false }
2.通过监听器来响应
设置MenuItem的监听器
new OnMenuItemClickListener(){ @Override public boolean onMenuItemClick(MenuItem item) { //do something return true; } };
onMenuItemClick()在点击菜单时调用,如果onMenuItemClick()返回true,则会停止其他回调的执行,包括onOptionsItemSelected().就是说,监听器的优先级比onOptionsItemSelected()的优先级高.
3.通过Intent来响应
使用MenuItem的setIntent(intent)方法,将菜单项与Intent关联,当Intent与菜单项关联后,如果没有其他方法来处理菜单项时,默认将会使用Intent的startActivity(intent)来调用该intent.
图标菜单
Android中除了使用文本菜单,还可以使用图标菜单.
但使用图标菜单会有一些限制:
1.图标菜单没法用于扩展菜单.
2.图标菜单不支持菜单项单选标记
3.与文本菜单一样,如果图标菜单中的文字过长,将会进行截断.
创建图标菜单的方法很简单,只要使用MenuItem的setIcon()方法即可.
子菜单
通过Menu的addSumMenu()方法可以轻松的往菜单添加子菜单,返回SubMenu对象,但没法往子菜单中在添加子菜单.
另外,如果一个图标菜单作为子菜单,则其图标会被忽略.
上下文菜单
在Android中,通过长按指令来调出上下文菜单.
上下文菜单与常规菜单不同之处在于:常规菜单式基于Activity的,一个Activity拥有一个菜单,而上下文菜单式基于视图的,因此一个Activity可以拥有多个上下文菜单.
通过Activity的onCreateContextMenu()方法来激活上下文菜单.它的作用类似于onCreateOptionsMenu().该回调函数返回上下文菜单对应的视图对象.
另外上下文菜单不同于常规菜单的地方在于:常规菜单是Activity自动创建的.而上下文菜单是需要手动注册的,想哪个视图拥有上下文菜单就对哪个视图进行注册.通过Activity的registerForContextMenu(view)来实现.
TextView tv = (TextView) findViewById(R.id.myText); registerForContextMenu(tv);//为视图tv注册上下文菜单
为视图注册后,android会调用onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("My Context Menu"); menu.add(1, 1, 1, "项目1"); }
使用onContextItemSelected()方法来响应上下文项的单击事件.
@Override public boolean onContextItemSelected(MenuItem item) { if(item.getItemId()==1){ Toast.makeText(this, "item id : 1", 1000).show(); return true; } return super.onContextItemSelected(item); }
这里只有item可以使用,不明白为什么没有提供view,如果两个上下文菜单项目的itemid相同,则上面的判断就有误了.
交替菜单
交替菜单的意思就是允许一个应用程序使用另外一个应用程序的菜单.
动态的菜单
假如希望菜单的内容是动态的,则应该使用onPrepareOptionsMenu()代替onCreateOptionsMenu(),onPrepareOptionMenu()在每次使用菜单时都会调用,这时就能根据实际情况修改菜单内容.
使用XML加载菜单
菜单xml一般放在/res/menu目录下,使用文件名作为资源id,下面是一个menu示例,文件名位mymenu.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <group android:id="@+id/group1"> <item android:id="@+id/item1" android:orderInCategory="1" android:title="item1"/> <item android:id="@+id/item2" android:orderInCategory="1" android:title="item2"/> </group> </menu>
接着是如何使用这个menu资源,Android提供了一个类:MenuInflater来载入xml菜单资源.
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu);//调用父类方法创建系统菜单 MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.mymenu, menu); return true;//返回true菜单才能显示 }
发表评论
-
Android dimen unit
2012-09-25 11:30 0Android支持以下尺寸类型 1.像素(px):表示屏幕上的 ... -
Android Style与Theme的应用
2012-09-26 16:28 606使用样式 1.通过HTML标记,可以在字符串资源中直接使用HT ... -
Android Adapter的应用
2012-09-26 16:27 742AdapterView Android中AdapterView ... -
[草稿]Android Intent的学习
2012-09-25 11:10 0Intent Intent是组件与组件之间交互、通信的中介,一 ... -
Android数据存储访问方式-File存储方式的应用
2012-09-25 11:04 1198Android的File存储方式分为两种,一种是保存在手机内存 ... -
Android数据存储访问方式-SharedPreferences的应用
2012-09-25 11:00 951SharedPreferences SharedPrefere ... -
Android数据存储访问方式-SQLite,ContentProvider的应用
2012-09-25 10:57 1294SQLite的简单介绍 SQLite是一个开源的,小型的嵌入式 ... -
Android资源类型、结构、使用
2012-09-25 10:49 955Android中通过@[package:]type ...
相关推荐
Android menu单选菜单.zip项目安卓应用源码下载Android menu单选菜单.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android高级应用源码-PopupWindow模仿UC底部Menu.zip
Android应用源码之CustomMenu_Android
《android 2.3应用开发实战》包括 android介绍、开发环境、应用开发平台、活动程序 activity、意图方法intent、widget、layout窗体布局、menu菜单、sqlite、service服务程序、应用程序国际化、webview、appwidget...
Android应用源码之menu.zip项目安卓应用源码下载Android应用源码之menu.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android应用源码之MenuSample.zip项目安卓应用源码下载Android应用源码之MenuSample.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android应用源码之menu1.zip项目安卓应用源码下载Android应用源码之menu1.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
fragment_menu.xml代码: fragment_content.xml代码: item_list.xml代码: activity_main.xml代码: package com.itcast.a4_6; import android.app.Activity; import android.app.FragmentTransaction; ...
《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言 第一部分 准备篇 第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 ...
Android 安卓开发应用源码 参考学习使用
杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会...
Android应用源码之天天动听 半透明Menu效果.zip项目安卓应用源码下载Android应用源码之天天动听 半透明Menu效果.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目...
Android应用源码之-satellite-menu-master.zip项目安卓应用源码下载Android应用源码之-satellite-menu-master.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术...
Android应用源码之PopupWindow模仿UC底部Menu.zip
Android应用源码之天天动听 半透明Menu效果.zip
源码参考,欢迎下载
《android 2.3应用开发实战》包括 android介绍、开发环境、应用开发平台、活动程序 activity、意图方法 intent、widget、layout窗体布局、menu菜单、sqlite、service服务程序、应用程序国际化、webview、app widget...