`

android2.2资源文件详解4--menu文件夹下的菜单定义

 
阅读更多

四.menu下定义菜单

格式:<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@[+][package:]id/resource_name"
          android:title="string"
          android:titleCondensed="string"
          android:icon="@[package:]drawable/drawable_resource_name"
          android:onClick="method name"
          android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
          android:actionLayout="@[package:]layout/layout_resource_name"
          android:actionViewClass="class name"
          android:actionProviderClass="class name"
          android:alphabeticShortcut="string"
          android:numericShortcut="string"
          android:checkable=["true" | "false"]
          android:visible=["true" | "false"]
          android:enabled=["true" | "false"]
          android:menuCategory=["container" | "system" | "secondary" | "alternative"]
          android:orderInCategory="integer" />
    <group android:id="@[+][package:]id/resource name"
           android:checkableBehavior=["none" | "all" | "single"]
           android:visible=["true" | "false"]
           android:enabled=["true" | "false"]
           android:menuCategory=["container" | "system" | "secondary" | "alternative"]
           android:orderInCategory="integer" >
        <item />
    </group>
    <item >
        <menu>
          <item />
        </menu>
    </item>
</menu>

属性:menu:根属性,包含item和group

       item:必须是menu或者group的子元素,可以包含menu(子菜单)

       group:必须是menu的子元素,包含item

属性详解:

menu:xmlns:android="http://schemas.android.com/apk/res/android"

item:

 

<item
        android:id="@+id/item1"
        android:alphabeticShortcut="m"
        android:checkable=""是否能被选中
        android:checked=""是否是默认选中的
        android:enabled=""是否可用
        android:icon=""图标
        android:menuCategory="container"菜单分类
        android:numericShortcut=""数字快捷键
        android:orderInCategory=""在分类中顺序
        android:title="root(m)"标题
        android:titleCondensed="mm"简化标题
        android:visible=""/>是否可见

 

 说明:其中menuCategory分为:

container For groups that are part of a container.

system For groups that are provided by the system.

secondary For groups that are user-supplied secondary (infrequently used) options.

alternative For groups that are alternative actions on the data that is currently displayed.

 

group:android:checkableBehavior子类项的选择方式

none Not checkable

all All items can be checked (use checkboxes)

single Only one item can be checked (use radio buttons

 

详解介绍:

1.选项菜单(option menu),当用户按下menu键或者调用openOptionsMenu()打开,第一次打开会依次回调:public boolean onCreateOptionsMenu(Menu menu)和public boolean onPrepareOptionsMenu(Menu menu

,以后每次打开只会回调: public boolean onPrepareOptionsMenu(Menu menu).返回键或者调用public void closeOptionsMenu()会关闭menu.会回调事件:public void onOptionsMenuClosed(Menu menu)

所以一般在onCreateOptionsMenu(Menu menu)中初始化:

 

@Override
 public boolean onCreateOptionsMenu(Menu menu) {
     super.onCreateOptionsMenu(menu);
     //通过MenuInflater将XML 实例化为 Menu Object
     MenuInflater inflater = getMenuInflater();
     inflater.inflate(R.menu.menu, menu);
     return true;
 }
 

 

 

boolean onPrepareOptionsMenu(Menu menu)
·这个方法将已经创建的 Menu 实例作为参数传递,这样的话就可以移除、添加、修改菜单项。

·Android 2.3及其之前的版本,系统在用户每次打开Options Men 时会调用onPrepareOptionsMenu()方法。

·Android 3.0及其之后的版本,当你要更新菜单时你必须调用 invalidateOptionsMenu() 方法,因为菜单

  是一直打开着的,然后系统会自动调用 onPrepareOptionsMenu() 方法。

 

 

事件处理:public boolean onOptionsItemSelected(MenuItem item)

 

 

@Override
 public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
         case R.id.about:
             // 显示关于页
             displayAboutBox();
             return true;
         case R.id.help:
             // 显示到帮帐页
             displayHelpDialog();
             return true;
         case R.id.settings:
             // 跳转到配置页
             displaySettings();
             return true;
         case R.id.quit:
             // 退出程序
             finish();
             return true;
         default:
             //返回False交由系统正常处理菜单,返回True则由本程序处理
             return false;
     }
 }
 

 

 

2.上下文菜单(content menu):长时间按住view会产生,需要在某个view上注册

说明:长时间按住就会调用oncreatecontextMenu,但是也可以调用public void openContextMenu(View view)打开,关闭时可以调用:closeContextMenu()

定义的xml格式和选项菜单是一样的,初始化调用public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)

 

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater=getMenuInflater();
    inflater.inflate(R.menu.meetings_context_menu, menu);
}

 

 事件处理:onContextItemSelected

 

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
        case R.id.delete_meeting:
            postionOfMeetingToDelete = info.position;
            showDialog(CONFIRM_DELETE_MEETING_DIALOG);
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}
 

 

注册菜单:registerForContextMenu和解除注册 unregisterForContextMenu

 

关闭时所回调的事件:onContextMenuClosed

 

注意:ContextMenu 与 OptionsMenu 的菜单资源XML文件格式完全相同,不能显示icon,但是ContextMenu可以具有自己的标题栏;

   ·通过setHeaderIcon、setHeaderTitle、setHeaderView、clearHeader方法控制标题栏的显示。

   ·ContextMenu 继承自 Menu ,标题栏相关的方式是扩展的方法。

多个 View 可以同时注册同一个 ContextMenu 

 

有些 View 会自带系统的 ContextMenu,比如 EditText 会自带“输入法”“复制”“粘贴”等菜单项,

再对这些 View 注册 ContextMenu 时,会将系统菜单项和自己注册的菜单项融合到一起

 

 

3.sub menu(子菜单):在定义选项菜单和上下文菜单时可以加入子菜单,当子菜单被选中时 仍然调用和父类菜单选中时一样的方法.

可以动态的通过addsubmenu和add方法添加子菜单和子菜单项

子菜单有相应的标题栏和相应的方法

 

其余的特性:

菜单组:可以通过menu.setGroupCheckable();

menu.setGroupEnabled();

menu.setGroupVisible()

进行同意设置

 

可以通过group的android:checkableBehavior属性设置组菜单项的选择模式

 

single
Only one item from the group can be checked (radio buttons)
all
All items can be checked (checkboxes)
none
No items are checkable

 

 

但是选择后我们要手动的改变状态,使用方法:setChecked()

 

 

 

 

 

 

分享到:
评论

相关推荐

    先电云计算基础架构服务平台镜像-XianDian-iaas-v2.2.iOS

    根据给定文件的信息,我们可以提炼出以下相关的IT知识点: ### XianDian云计算基础架构服务平台 #### 一、概述 “先电云计算基础架构服务平台镜像-XianDian-iaas-v2.2.iOS”这一标题揭示了产品的主要特征与功能。...

    Android SDK2.2开发环境详解

    - **手动下载SDK**:在网络不佳时,可以手动下载SDK包,通过分析SDK下载器的源文件列表,可以直接从指定URL下载对应的SDK版本,如`android-2.2_r01-windows.zip`等,这种方式避免了长时间的在线等待。 #### 4. SDK...

    Android2.2 widget小程序

    《Android2.2小部件(Widget)开发详解》 Android平台的小部件(Widget)是其桌面环境中的一个重要组成部分,允许用户在主屏幕上放置各种应用程序的功能快捷方式或动态展示信息。本教程将深入探讨如何在Android 2.2...

    广告植入系统API协议_v2.2_2016-08-171

    《广告植入系统API协议_v2.2_2016-08-171》详解 广告植入后台系统API协议是一份详细的技术文档,旨在规范不同平台与广告植入后台系统之间的通信接口。这份协议版本为V2.2,发布日期为2016年8月17日,其主要内容涵盖...

    android2.2通讯录操作源代码

    ### Android 2.2 通讯录操作源代码详解 #### 一、概述 本文将详细介绍一个基于Android 2.2版本的通讯录操作示例源代码。该代码实现了读取、添加、删除以及更新联系人的功能。对于学习Android平台上的通讯录操作来...

    Android SDK2.2 开发环境详解

    Google在旧金山Moscone会展中心举办Google I/O 2010大会第二天(美国时间5月20日上午)的会议之上如约正式发布了代号为“Froyo(冻酸奶)”的最新版Android 2.2操作系统。而紧接着网络中也开始提供SDK(开发者套件)安装包...

    Apache2.2配置文件详解

    ### Apache2.2配置文件详解:深入理解Apache Web服务器配置 Apache HTTP Server是全球最广泛使用的Web服务器之一,其灵活性和可定制性为网站开发者提供了强大的功能与控制能力。在Apache2.2版本中,主要的配置文件...

    android2.2中文api

    通过《Android SDK 2.2 开发环境详解.doc》和《Android 2.2_API_中文文档.docx》,开发者可以详细了解这些特性和API的使用方法,从而更好地利用Android 2.2平台进行应用开发。这些文档通常包含详细的技术指南、示例...

    AndroidSDK2.2开发环境详解中文2.42MB最新版本

    本文档主要讲述的是Android SDK 2.2 开发环境详解;Android 2.2是非常值得期待,本文是根据个人实践经验配置Android SDK2.2+Eclipse 的开放环境编写的详细步骤。根据这些步骤,就是门外汉也可有完成。希望本文档会给...

    【eoe特刊】第十期:Android2.2特色详解

    ### 三、详解Android 2.2中的JIT内核编译器 **Just-In-Time (JIT) 编译器**是Android 2.2中引入的一项关键技术,它显著提升了应用程序的运行效率。JIT编译器的作用是在应用程序运行时动态地将字节码编译成机器代码...

    CP343-1_GSD文件_V2.2_20080919.zip

    《CP343-1模块的GSD文件详解》 在工业自动化领域,西门子的CP343-1模块扮演着至关重要的角色。它是一款高性能的以太网通信模块,广泛应用于SIMATIC S7-300系列PLC系统中。本文将围绕标题中的“CP343-1_GSD文件_V2.2...

    android ext4文件系统打包详解

    在Android开发中,ext4文件系统打包是系统镜像制作的重要一环。本文档将详细介绍在Android平台上使用make_ext4fs工具打包ext4文件系统镜像的过程,并对相关的操作注意事项进行说明。同时,文档也会涉及使用simg2img...

    Android资源文件详解

    资源文件夹用来存放各种资源类型,如图片、字符串、样式等,而资源文件夹下的文件则通过特定的格式定义和组织这些资源。本文将详细介绍Android资源文件的分类、组织结构和使用方法。 首先,资源文件夹中存放的文件...

    《系统文件和文件夹详解》

    ### 系统文件和文件夹详解 在计算机操作系统中,各种文件和文件夹承载着重要的功能,它们共同协作以确保系统的稳定运行与用户的便捷使用。本文将深入探讨几个关键的系统文件和文件夹,包括Cookies、Command、...

    eoeAndroid特刊第十期:android2.2特色详解 pdf

    eoeAndroid特刊第十期:android2.2特色详解 pdf,主要介绍最新的android2.2系统。全面介绍android2.2中的重点升级,JIT内核编译器等方面的内容,本期亮点是推出了三份最近的android行业研究报告,技术盛宴版块里有...

    weibo4android新浪微博Android案例源码(Android 2.2以上)

    "weibo4android"是一个专门为Android平台设计的新浪微博客户端应用源码,适用于Android 2.2及以上版本。这个项目可能是由开发者为了教学、研究或二次开发目的而发布的,允许用户查看、发布微博,实现社交媒体功能。 ...

    element 中 el-menu 组件的无限极循环思路代码详解

    本文详细探讨了如何在 Element UI 中使用 el-menu 组件实现无限极循环菜单,即菜单项的子菜单项还可以拥有自己的子菜单,形成一个嵌套的结构。 为了实现无限极循环菜单,需要进行组件嵌套,即在 el-menu 组件内部...

    android2.2 官方实例

    《Android 2.2 官方实例详解》 在Android操作系统的发展历程中,Android 2.2(Froyo)是一个重要的里程碑。这个版本引入了许多关键的改进和新特性,为开发者提供了更丰富的功能和更好的性能优化。本篇将深入探讨...

    在Windows下搭建Android2.2开发环境

    ### 在Windows下搭建Android 2.2开发环境详解 #### 一、概述 本文将详细介绍如何在Windows操作系统下搭建Android 2.2开发环境。通过本教程,您将能够完成以下步骤:安装Java Development Kit (JDK)、配置Android ...

    Android SDK 2.2 + Eclipse开发环境图文详解

    ### Android SDK 2.2 + Eclipse 开发环境配置与详解 #### 一、引言 随着移动互联网的兴起,Android 成为了最受欢迎的移动操作系统之一。为了满足开发者的需求,Google 不断更新和完善 Android 开发者工具。2011 年...

Global site tag (gtag.js) - Google Analytics