栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

高级UI设计之菜单

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

高级UI设计之菜单

菜单是应用程序中非常重要的组成部分,能够在不占用界面空间的前提下,为应用程序提供了统一的功能和设置界面,并为程序开发人员提供了易于使用的编程接口
Android系统支持三种菜单

Options Menu(选项菜单)

Android3.0版本以前的显示效果如左图所示(需要单击Menu键弹出菜单)
Android3.0版本以后的显示效果如右图所示(需要单击标题栏的…)

Android应用程序中使用选项菜单,需要重写Activity中的两个方法:
public boolean onCreateOptionsMenu(Menu menu):调用OptionMenu,在该方法中完成菜单初始化;
public boolean onOptionsltemSelected(Menultem item):菜单项被选中时触发,在该方法中完成事件处理。

Android中菜单项的生成有两种方式:
编写菜单项XML文件,并通过在onCreate OptionsMenu()函数中调用getMenulnflater().inflate()函数来生成一个菜单。使用该方式可以将菜单内容和代码进行分离,有利于后续菜单的调整,但是这种方式在菜单中为选项添加图标比较困难。
在Java代码中编写菜单生成代码,这种方式虽然在菜单的生成方式上较前一种稍显复杂,但是可以生成形式更为丰富的菜单项。
Context Menu(上下文菜单)
Context Menu(上下文菜单)类似于Windows中的右键快捷菜单,但两者的区别在于Android中是用长按来显示一个ContextMenu的。
Android提供了Java代码和标准的XML菜单文件两种方式来定义菜单及菜单项。
如果要在Android的应用程序中使用ContextMenu(上下文菜单),就需要使用以下步骤实现。

重写onCreateContextMenu()方法

通过重写每个Activity类中的onCreateContextMenu()方法来加载菜单,该方法的原型如下:

第一个参数menu为要加载的上下文菜单。
第二个参数v为与菜单相关的组件。
第三个参数menulnfo是菜单的附加信息。
当用户单击某个组件时,该组件会把自己传递到第二个参数中,此时就可以通过View对象中的getld()函数来得到用户单击组件的ID,从而创建不同的上下文菜单。

加载菜单的方式

方法一:XML菜单文件
首先,在res/menu文件夹下创建XML菜单资源文件,并定义菜单项。如果没有menu文件夹,就需要开发者创建。
menu>:用来定义菜单,包含菜单项。必须有一个menu>作为XML的根元素,其中可包含一个或多个item>和group>元素。
item>:定义菜单项,每个item>都表示一个菜单项,还可以内嵌menu>元素,用来创建子菜单。
group>:此元素是可选的、不可见的,用来对菜单项进行分类,使他们可以共享相同的属性。

item>元素常用的属性

id : 表示菜单项的唯一资源ID,用来识别菜单项
icon: 表示菜单项的显示图标,可以指定一个图片资源。
title:表示菜单项的显示标题,可以指定字符串资源。

其次,在onCreateContextMenu()方法中使用getMenulnflater.inflate()方法填充菜单资源,即将XML菜单资源转换成一个可编程的对象。其代码如下:

方法二:java代码

通过代码动态添加菜单项可以直接使用onCreateOptionsMenu()方法的menu参数,并调用add()方法添加菜单项。即:
menu.add(菜单项组号,菜单项ID,菜单项排序号,菜单项标题)
其中菜单项的排序号如果是按照菜单项的添加顺序排序,该参数的值可以都为0。
直接在onCreateContextMenu()方法中用Java代码实现,实现代码如下:
直接在onCreateContextMenu()方法中用Java代码实现,实现代码如下:

Context Menu(上下文菜单)

重写onCreateContextMenu()方法
为View组件注册ContextMenu

TextView tvinfo=(TextView)this.findViewByld(R.id.tvinfo);
this.registerForContextMenu(tvinfo);

重写onContextltemSelected()方法
ContextMenu菜单建成后,需要给ContextMenu指定监听器为每个菜单项添加执行功能,即重写onContextltemSelected()方法,
操作过程见视频资源
欢迎大家加我微信交流讨论(请备注csdn上添加)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338080.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号