Android2010-07-08 00:57:05阅读1041评论3字号:订阅

今晚在做应用程序时,需要用到 Menu。左思右想还是决定编写 menu.xml 的方式来完成,这样做的好处:1、方便管理(这也正是android应用xml的原因之一);2、便于修改。在 Android 中任何视图组件的创建方式都有两种:1、在XML文件中创建;2、在代码中创建。Menu 也不例外,我们既可以在资源文件中声明,也可以在代码中创建。

Android中的菜单分为:1、选项菜单 ,2、上下文菜单和子菜单,都可以在XML文件中声明定义,在代码中通过MenuInflater类来使用。本节主要讲 Menu 在 XML 中的定义以及在程序中的应用。

一、Menu资源文件的定义

Menu资源文件也是一个XML文件,该文件存放于工程的res/menu/menu.xml目录下。通过R.menu.menu的方式来引用。

Menu资源文件的结构:

1、<menu>根元素,在<menu>根元素里面会嵌套<item><group>子元素,<menu>根元素没有属性。

2、<item>元素中也可嵌套<menu>形成子菜单。

3、<group>表示一个菜单组,相同的菜单组可以一起设置其属性,例如visibleenabledcheckable等。<group>元素的属性说明 如下:

id:唯一 标示该菜单组的引用id

menuCategory:对菜单进行分类,定义菜单的优先级,有效值为containersystemsecondaryalternative

orderInCategory:一个分类 排序整数。

checkableBehavior:选择 行为,单选、多选还是其他。有效值为noneallsingle

visible:是否可见,true或者false

enabled:是否可用,true或者false


<item>表示菜单项,包含在<menu><group>中的有效属性。<item>元素的属性说明如下。

id:唯一标示菜单的ID引用。

menuCategory:菜单分类。

orderInCategory:分类排 序。

title:菜单标题字符串。

titleCondensed:浓缩标题, 适合标题太长的时候使用。

icon: 菜单的图标。

alphabeticShortcut:字 符快捷键。

numericShortcut:数字快捷键。

checkable:是否可选。

checked:是否已经被选。

visible:是否可见。

enabled:是否可用。

二、Menu 在程序中的应用

在定义了 Menu 后,接下来就是在程序中去应用它,方法如下:
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}

下面来个实例:
1、定义Menu 文件(
res/menu/ blacklist.xml):
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="File" android:icon="@drawable/icon">
<menu>
<group android:id="@+id/noncheckable_group"
android:checkableBehavior="none">
<item android:id="@+id/newFile" android:title="New"
android:alphabeticShortcut="n" />
<item android:id="@+id/openFile" android:title="Open"
android:alphabeticShortcut="o" />
<item android:id="@+id/saveFile" android:title="Save"
android:alphabeticShortcut="s" />
</group>
</menu>
</item>

<item android:title="Edit" android:icon="@drawable/icon">
<menu>
<group android:id="@+id/edit_group" android:checkableBehavior="single">
<item android:id="@+id/cut" android:title="Cut" android:checked="true"/>
<item android:id="@+id/copy" android:title="Copy" />
<item android:id="@+id/past" android:title="Past" />
</group>
</menu>
</item>

<item android:title="Help" android:icon="@drawable/icon">
<menu>
<group android:id="@+id/help_group">
<item android:id="@+id/about" android:title="About" />
<item android:id="@+id/exit" android:title="Exit" />
</group>
</menu>
</item>
</menu>

2、程序中应用:
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.blacklist, menu);
return super.onCreateOptionsMenu(menu);
}

3、运行效果图:


当然,这些功能我们都可以在程序中用编码来实现。不过在XML中做起来更简洁。好了,就到此结束,该睡觉了,晚安。

更多相关文章

  1. Android中运用Pull解析器读取XML文件
  2. android音频视频播放器
  3. Android(安卓)framebuffer 截屏原理
  4. Android安全机制之反编译
  5. Android(安卓)通过zygote来运行java程序
  6. Android(安卓)SDK tools adb.exe下文件丢失问题
  7. Android系统init.rc分析
  8. Android(安卓)使用 DownloadManager 管理系统下载任务的方法
  9. 生成Android(安卓)App签名(为APK签名)

随机推荐

  1. Android下读取logcat的信息
  2. 搭建 android 代码镜像服务
  3. Android获取所在地城市名2
  4. 转:Android下文件操作模式(含SDCard的读写)
  5. 理解Android中垃圾回收日志信息
  6. 【Android】如何用MediaPlayer实现一个简
  7. Android中的数据库
  8. 如何去除launcher 上默认的 google searc
  9. Android 筆記-Linux Kernel SMP (Symmetr
  10. android 包管理系统分析