Android学习笔记(34):Android菜单

Android的菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)。

选项菜单(Option Menu):按设备上的菜单按钮(Menu)会出现的菜单。不支持勾选标记。

上下文菜单(Context Menu):长按某个组件会出现的菜单。不支持菜单项图标。

子菜单(SubMenu):就是子菜单。不支持菜单项图标,不支持嵌套子菜单。

Menu类用于添加菜单项和子菜单的方法是add()和addSubMenu():

MenuItem add(CharSequence title):添加一个菜单项

MenuItem add(int groupId, int itemId, int order, int titleRes):添加一个处于groudId组的菜单项

MenuItem add(int titleRes):添加一个菜单项

MenuItem add(int groupId, int itemId, int order, CharSequence title):添加一个处于groudId组的菜单项

SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title):添加一个处于groudId组的子菜单

SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes):添加一个处于groudId组的子菜单

SubMenu addSubMenu(CharSequence title):添加一个子菜单

SubMenu addSubMenu(int titleRes):添加一个子菜单

(1)选项菜单的创建方法:

1、重写Activity的onCreateOptionsMenu(Menu menu)方法。

2、调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法为菜单项设置图标。

3、重写Acitivy的onOptionsMenuSelected()方法为菜单设置事件监听。

(2)子菜单的创建方法:

1、重写Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单。

2、调用SubMenu的add()方法,添加子菜单项。

3、重写onCreateItemSelected()方法,为菜单设置监听事件。

SubMenu类还提供了额外的方法来设置菜单头的信息:

SubMenu setHeaderIcon(Drawable icon):设置菜单头的图标。

SubMenu setHeaderIcon(int iconRes):设置菜单头的图标。

SubMenu setHeaderTitle(CharSequence title):设置菜单头的标题。

SubMenu setHeaderTitle(int titleRes):设置菜单头的标题。

SubMenu setHeaderView(View view):使用View组件设置菜单头。

(3)上下文菜单的创建方法:

1、重写Activity的onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo)方法,View参数设置的是触发上下文菜单的组件。

2、调用Menu的add()方法添加菜单项MenuItem

3、重写onContextItemSelected()方法,为上下文菜单设置事件监听。

4、调用registerForContextMenu(View)方法,为View组件注册上下文菜单。

同样我们可以用setHeaderIcon()、setHeaderTitle()方法为上下文菜单设置图标、标题。

(4)为菜单项设置事件监听:

我们重写Activity的onCreateItemSelected()方法来设置事件监听,一般我们用switch方法判断是哪个菜单项被单击,所以我们需要为每个菜单项设置一个id,以方便判断。

当然我们还有另一个方法就,就是为每个菜单项绑定监听器,用setOnMenuItemClickListener()方法,但这样做是很麻烦的,不推荐。

(5)设置单选菜单项和多选菜单项:

setCheckable(boolean checkable):设置该菜单项可否被勾选。

setGroupCheckable(int group,boolean checkable,boolean exclusive):设置group组的菜单项是否可以被勾选,如果exclu设置为true,那么该组为单选菜单项。

(6)为菜单项设置快捷键(现在好像没什么用了):

setAlphabeticShortcut(char alphaChar):设置字母快捷键。

setNumericShortcut(char numericChar):设置数字快捷键。

setShortcut(char numericChar, char alphaChar):同时设置两种快捷键。

(7)设置与Activity关联的菜单项:

用于单击某个菜单项时可以跳转到其他Activity。

用setIntent(Intent intent)方法。

(8)使用XML文件创建菜单:

创建方法是

1.在res文件下面的menu文件目录下创建菜单的xml文件。

2.在Activity的onCreateOptionsMenu()方法或onCreateContextMenu()方法中用inflate(int
menuRes, Menu menu)方法加载对应资源。

3.重写Activity相关的事件监听方法。

menu文件夹下的xml有如下的规则:

1.根元素是<menu.../>,没有多余的属性。

2.<group.../>将多个菜单项<item.../>包装成一个菜单组。

可以设置如下属性:

checkableBehavior:菜单项额选择行为,none(不可选)、all(多选)、single(单选)。

menuCategory:指定菜单项的优先级,container、system、secondary和alternative。

visible:是否可见

enable:是否可用

3.<item.../>用于定义菜单项,内部可包含<menu.../>,就成了子菜单。

可以设置的属性如下:

android:id:设置ID

android:title:设置标题

android:icon:设置图标

android:alphabeticShortcut:设置字母快捷键

android:numbericShortcut:设置数字快捷键

android:checkable:是否可选

android:checked:是否选中

android:visible:是否可见

android:enable:是否可用

(9)弹出式菜单PopupMenu

创建步骤如下:

1、new PopupMenu(Context context,View anchor)创建弹出式菜单,anchor参数表示触发菜单的组件。

2、调用MenuInflater的inflate()方法加载菜单资源。

3、调用PopupMenu的show()方法显示弹出式菜单。

时间: 2024-12-25 05:47:54

Android学习笔记(34):Android菜单的相关文章

Android学习笔记_78_ Android开发中使用软引用和弱引用防止内存溢出

在<Effective Java 2nd Edition>中,第6条"消除过期的对象引用"提到,虽然Java有 垃圾回收机制,但是只要是自己管理的内存,就应该警惕内存泄露的问题,例如的对象池.缓存中的过期对象都有可能引发内存泄露的问题.书中还提到可以用 WeakHashMap来作为缓存的容器可以有效解决这一问题.之前也确实遇到过类似问题,但是没有接触过"弱引用"相关的问题,于是查阅了一些资料. <Java 理论与实践: 用弱引用堵住内存泄漏>

九、Android学习笔记_ Android开发中使用软引用和弱引用防止内存溢出

在<Effective Java 2nd Edition>中,第6条"消除过期的对象引用"提到,虽然Java有 垃圾回收机制,但是只要是自己管理的内存,就应该警惕内存泄露的问题,例如的对象池.缓存中的过期对象都有可能引发内存泄露的问题.书中还提到可以用 WeakHashMap来作为缓存的容器可以有效解决这一问题.之前也确实遇到过类似问题,但是没有接触过"弱引用"相关的问题,于是查阅了一些资料. <Java 理论与实践: 用弱引用堵住内存泄漏>

Android学习笔记_79_ Android 使用 搜索框

1.在资源文件夹下创建xml文件夹,并创建一个searchable.xml: <?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/sms_search" android:hint="@st

Android学习笔记一 Android的构成

一个Android程序是由多个Activity松散构成通过Intnet对象相互调用每个Activity相对独立. R文件:自动生成,存储着程序集所包含的资源文件. src:包含程序中所有的Activity类文件. 新添加的Activity必须在AndroidManifest.xml中进行注册. values:该文件夹下的元素会在R文件中生成资源ID. Android学习笔记一 Android的构成

Android学习笔记之树形菜单的应用...

PS:终于考完试了,总算是解脱了...可以正式上手项目开发了.... 学习内容: 1.掌握如何使用树形菜单...   对知识点进行一下补充...居然忘记了去学习树形菜单...不过在这里补上... ExpandableListView树形菜单...   树形菜单其实就是一个列表,只不过是在列表中再次嵌套一个或者是多个子菜单项,子菜单项中可以包括很多的内容...其实就拿QQ来说,就是使用了一个树形菜单...QQ中的分组管理其实就是树形菜单的一个应用...树形菜单继承与ListView...这里我们使

android学习笔记34——ClipDrawable资源

ClipDrawable ClipDrawable代表从其他位图上截取一个“图片片段” 在XML文件中定义ClipDrawable对象使用<clip.../>元素,该元素的语法为: 以上语法格式中可指定如下三个属性: 1.android:drawable:指定截取的源Drawable对象 2.android:clipOrientaton:指定截取方向,可设置水平或垂直截取 3.android:gravity:指定截取时的对齐方式 注:使用ClipDrawable对象是可调用setLevel(i

Android 学习笔记 2 Android开发环境的安装(Eclipse Bundle)

搭建eclipse开发环境,一般要经过 安装JDK.安装Eclipse.下载Android SDK.在Eclipse中安装ADT.在Eclipse中配置Android SDK.通过SDK Manager对Android SDK进行管理等几个比较麻烦的步骤. 后来Google推出了 adt-bundle 将ATD.SDK整合到Eclipse中,这样对于新手来说就免去了很多步骤,入门更容易了. 在此推荐一个网站 http://tools.android-studio.org/ 可以免去搬梯子去And

(android学习笔记)Android View

Android View类: 1.所有的Android组件均是View的子类. 2.所有的组件均可以进行两种配置,一是通过方法进行配置.二是通过XML进行配置. TextView类: 1.对于文本组件而言主要的目的是静态的显示一些文字,类似于标签的功能. 2.其是android.widget.TextView类,是android.view.View类的直接子类. 3.插入超链接的方法: 1)在XML文件中的TextView组件配置中写:android:autoLink="all" 会自

Android学习笔记十七.Android数据存储与IO.File存储常用API

Android通过一套完整的I/O流体系,包括FileInputStream.FileOutputStream等,通过这些I/O流来访问手机存储上的文件. 一.API 1.File (1)功能:该类提供一些有限的功能-获取或设置文件的权限.文件类型.最后依次修改时间等,通常它所代表的文件名(包含路径)将被转换为UTF-8字节序列被使用. (2)继承关系 java.lang.Object ? java.io.File (3)构造方法  File(File dir, String name):构造一