博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用xml布局菜单
阅读量:6939 次
发布时间:2019-06-27

本文共 2053 字,大约阅读时间需要 6 分钟。

  目前为止我们都是通过硬编码来增加菜单项的,android为此提供了一种更便利的方式,就是
把menu也定义为应用程序的资源
,通过android对资源的本地支持,使我们可以更方便地实现菜单的创建与响应。这一篇就介绍如何使用XML文件来加载和响应菜单,我们需要做这几步:
  一般我们都是通过硬编码来增加菜单项的,例如我们之前介绍的。google为此提供了一种更便利的方式,就是
  1. 在/res目录下创建menu文件夹
  2. 在menu目录下使用与menu相关的元素定义xml文件,文件名任意,android会自动为其生成资源ID。例如:R.menu.itemmenu对应menu目录的itemmenu.xml资源文件
  3. 使用xml文件的资源ID,将xml文件中定义的菜单项添加到menu对象中去
  4. 响应菜单项时,使用每个菜单项对应的资源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来实现。

2.为菜单项添加图标

3.设置菜单项的可选出现

使用android:checkableBehavior设置一组菜单项的可选策略,可选值为:none, all, single

使用android:checked设置特定菜单项

4.设置菜单项可用/不可用

5.设置菜单项可见/不可见

转载地址:http://qefnl.baihongyu.com/

你可能感兴趣的文章
SQL 列出某列有重复的记录
查看>>
POJ 3169 Layout(差分约束+SPFA)
查看>>
MVC3 URL 数据绑定
查看>>
ScrollViewer中元素焦点丢失问题
查看>>
linux上安装配置vsftpd
查看>>
精至手机药典Windows Phone 7版
查看>>
非使用FindControl方法找到深层嵌套的控件 Ver2
查看>>
Android 开发学习笔记(二)—— Activity和Intent
查看>>
BZOJ 1915 [Usaco2010 Open]奶牛的跳格子游戏
查看>>
医生orm之count、where的若干问题
查看>>
SQL Note--Mirror
查看>>
12种编程语言类比12星座女【转载】
查看>>
asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证
查看>>
MYSQL复制的几种模式
查看>>
《C标准库》((美)普劳格)【摘要 书评 试读】- 京东图书
查看>>
【JS基础回归】关于parseInt 与 numberObj.toString 中的“raidx”
查看>>
SVN如何check out单个文件
查看>>
Winsock IO模式
查看>>
Squid 代理服务器
查看>>
constellio——基于solr的开源搜索引擎系统源码研究(二)
查看>>