安卓开发-使用XML菜单布局简单介绍
2014-08-18 11:42
633 查看
使用xml布局菜单
目前为止我们都是通过硬编码来增加菜单项的,android为此提供了一种更便利的方式,就是把menu也定义为应用程序的资源,通过android对资源的本地支持,使我们可以更方便地实现菜单的创建与响应。这一篇就介绍如何使用XML文件来加载和响应菜单,我们需要做这几步: 一般我们都是通过硬编码来增加菜单项的,例如我们之前介绍的。google为此提供了一种更便利的方式,就是在/res目录下创建menu文件夹
在menu目录下使用与menu相关的元素定义xml文件,文件名任意,android会自动为其生成资源ID。例如:R.menu.itemmenu对应menu目录的itemmenu.xml资源文件
使用xml文件的资源ID,将xml文件中定义的菜单项添加到menu对象中去
响应菜单项时,使用每个菜单项对应的资源ID
(一)定义资源文件
在res目录下创建menu文件夹,在menu下创建一个xml资源文件,我这里叫做main_menu.xml
编写main_menu.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- group1 -->
<group android:id="@+id/group1">
<item android:id="@+id/mi1"
android:title="item1"/>
<item android:id="@+id/mi2"
android:title="item2"/>
</group>
<!-- group 2 -->
<group android:id="@+id/group2">
<item android:id="@+id/mi3"
android:title="item3"/>
<item android:id="@+id/mi4"
android:title="item4"/>
</group>
</menu>
这里简单的添加了4个菜单项,并将其分为2组。item元素的android:title值可以引用values中的string资源。
(二)使用MenuInflater添加菜单项
MenuInflater在android中建立了从资源文件到对象的桥梁,MenuInflater即把菜单xml资源转换为对象并添加到menu对象中,它可以通过activity的getMenuInflater()得到。我们在MainActivity中重写onCreateOptionsMenu(...)方法。
@Override publicboolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.mainmenu, menu); returntrue; }
(三)响应菜单
最后重写onOptionsItemSeleted(...)方法。
@Override publicboolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.mi1: // do sth break; case R.id.mi2: // do sth break; case R.id.mi3: // do sth break; case R.id.mi4: // do sth break; } return true; }
这一步最大的体现了使用XML生成菜单的好处。android不仅为我们定义的xml文件生成了资源ID,同样可以为group,menu item来自动生成ID(就像为布局中定义的view生成id那样)。
至此,我们完成了一个简单的“使用XML生成菜单”的demo,并从中体会到了使用资源文件的好处,因此这是android中创建菜单的推荐方式。实际上,我们在代码中对菜单项或分组的操作都能在xml文件中完成,下面就简单介绍一些比较常用的功能。
(五)更多菜单资源的功能
1.资源文件实现子菜单
子菜单通过在item元素中嵌套menu来实现。
<item android:title="系统设置"> <menu> <item android:id="@+id/mi_display_setting" android:title="显示设置"/> <item android:id="@+id/mi_network_setting" android:title="网络设置"/> <!-- 别的菜单项 --> </menu> </item>
2.为菜单项添加图标
<item android:id="@+id/mi_exit" android:title="退出" android:icon="@drawable/exit"/>
3.设置菜单项的可选出现
使用android:checkableBehavior设置一组菜单项的可选策略,可选值为:none, all, single
<group android:id="..." android:checkableBehavior="all"> <!-- 菜单项 --> </group>
使用android:checked设置特定菜单项
<item android:id="..." android:title="sometitle" android:checked="true"/>
4.设置菜单项可用/不可用
<item android:id="..." android:title="sometitle" android:enabled="false"/>
5.设置菜单项可见/不可见
<item android:id="..." android:title="sometitle" android:visible="false"/>
相关文章推荐
- 关于使用eclipse开发安卓时布局界面XML的graphical layout没有显示的问题
- 安卓开发笔记——关于开源项目SlidingMenu的使用介绍(仿QQ5.0侧滑菜单)
- 安卓app开发-05-Android xml布局详细介绍
- 在对小程序开发时我们会进行页面的布局。这里我们简单的介绍下flex布局的使用
- 安卓开发_时间、日期选择器的简单使用
- 简单介绍使用WCF的Web编程模型开发REST风格的Web Service
- 【COCOS2DX-LUA 脚本开发之六】利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架
- 安卓开发调试工具DDMS使用介绍
- 详细介绍在windows系统中配置 cocos2d-x 开发环境及简单使用(VS2012+Cocos2d-x 3.0rc1)
- 命令行下使用android SDK工具手工开发简单安卓小项目
- 安卓学习笔记:使用PopupWindow创建简单菜单
- 简单介绍使用WCF的Web编程模型开发REST风格的Web Service
- IPHONE应用开发 - Tab Bar Control(标签栏)使用的简单介绍
- 各种xml开发库介绍及使用
- xml简单介绍及使用dom4j进行解析
- [一个星期自学安卓]使用xml加载菜单Menu
- 利用ATL技术创建ActiveX控件CircleCtl 。简单介绍 VC2003 使用 ATL 开发 ActiveX 控件(转)
- 使用xml布局菜单
- 使用libcurl进行文件下载类项目开发(一) libcurl简单使用介绍
- 【COCOS2DX-LUA 脚本开发之六】利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架