Android学习

对菜单的学习

Android有三种基本的菜单类型

        ●选项菜单OptionsMenu:Activity的主菜单项集合,一般放置对应用有全局影响的操作,如“搜索”“设置”等。

        ●上下文菜单ContextMenu:用户长按某元素时出现的浮动菜单,菜单提供的操作仅影响所选内容或上下文。

        ●弹出菜单PopupMenu:以垂直列表形式显示一系列菜单项,并且该列表会固定在调用该菜单的视图中,它适用于提供与特定内容相关的操作,如Activity的内容区域相关的扩展操作。

使用XML定义菜单

针对这三种类型的菜单,Android都提供了标准的XML格式定义菜单及其所有项

XML方式的优点:

        ●XML方式可以可视化菜单结构。

        ●菜单内容与应用的逻辑代码分离。

        在res目录上右击选择AndroidResourceFile,打开NewResourceFile对话框,创建Resourcetype为menu的XML文件,该菜单文件的构成元素包括:<menu>、<item>、<group>。

        ● <menu>:菜单根节点,能够包含一个或多个<item>和<group>元素,它是定义菜单项的容器。

        ● <item>:菜单项节点,用于创建MenuItem对象,可包含嵌套<menu>元素,以便创建子菜单。

        ● <group>:用于对菜单项进行分类,它是<item>元素的不可见容器。

XML菜单文件的示例代码如下:

<item>元素的常用属性

        ●android:id:设置菜单项的id,用于识别该菜单项。

        ● android:icon:设置菜单项的图标,Android3.0之后折叠菜单默认不显示图标。

        ●android:title:设置菜单项的标题字符串。

        ● android:showAsAction:指定菜单项在标题栏的显示的时机和方式,菜单项只有在Activity 包含应用栏时才能显示为操作项。取值说明如表所示。

取值说明
ifRoom只有在标题栏中有空间时才将此项放置其中。如果没有足够的空间容纳标记为ifRoom的所有项,标题栏显示不了的菜单项将显示在溢出
withText菜单项的文本和图标一起显示,可以将此值与其他值用竖线(
never菜单项永远不显示在标题栏,而隐藏在溢出菜单中
always始终将此菜单项显示在标题栏。除非必须始终显示在标题栏,否则不要使用该值
collapseActionView将菜单项折叠到一个按钮中,选择按钮展开,一般与ifRoom一起使用

菜单项的图标通过ImageAsset工具进行创建

 选项菜单option_menu.xml

上下文菜单context_menu.xml

弹出菜单popup_menu.xml

选项菜单

每个Activity默认都自带选项菜单,只需要添加菜单项,响应菜单项的单击事件。

        android.view.Menu接口表示菜单

        android.view.MenuItem接口表示菜单项

        android.view.SubMenu接口表示子菜单

        1.Activity通过重写OnCreateOptionsMenu()方法加载创建的XML菜单资源,在此方法中使用MenuInflater类的inflate()方法将XML资源加载到Menu对象。

        2.使用add()添加菜单项,该方法有4个参数,分别为:菜单项的组别id、菜单项id、排列顺序及菜单项标题,菜单项的图标设置可以调用setIcon()来实现

        当用户从选项菜单中选择菜单项时,系统将调用onOptionsItemSelected(),此方法将传递所选的MenuItem对象,通过调用该MenuItem对象的getItemId()方法获取菜单项的id

选项菜单的运行效果。

         默认情况下,即便在菜单XML文件中定义了android:icon属性,在溢出菜单中图标也不会显示,可以使用反射的方法获取Menu对象的setOptionalIconsVisible(),调用该方法显示图标icon

然后将此方法添加到onCreateOptionsMenu()方法的return语句之前

上下文菜单

        当用户长按某一控件时出现的浮动菜单称为上下文菜单。上下文菜单不同于选项菜单,选项菜单服务于Activity,而上下文菜单则注册在某个View对象上。它通常应用于列表中的每一项元素,如:长按列表项弹出删除对话框。

Android提供了两种上下文操作菜单的方法。

        ●使用浮动上下文菜单,如图2.30所示,当长按某个View时,显示为菜单项的浮动列表。

        ●使用上下文操作模式,如图2.31所示,它在屏幕顶部栏显示上下文操作栏选项。

1.创建浮动上下文菜单操作步骤

(1)注册菜单

        通过调用registerForContextMenu(View view)注册与上下文菜单关联的View。如果将ListView或GridView作为参数传入,那么每个列表项将会有相同的浮动上下文菜单。

(2)加载菜单资源

        在Activity或Fragment中实现onCreateContextMenu(),动态加载Menu资源。当注册后的View收到长按事件时,系统将调用此方法。

(3)处理菜单项单击事件

        在Activity或Fragment中实现onContextItemSelected(),实现菜单项的单击逻辑。

        上下文操作模式是ActionMode对象的系统实现,当用户长按控件或选中复选框等组件时调用此模式,会在屏幕顶部出现上下文操作栏,显示用户对所选控件执行的操作。

2.建上下文操作栏模式的上下文菜单操作步骤

(1)实现ActionMode.Callback接口

在该接口的回调方法中,为上下文操作栏指定操作、响应菜单项的单击事件等。

该接口的回调方法与选项菜单的回调方法基本相同,只是需要传递与事件相关联的ActionMode对象。onActionItemClicked()方法用于处理菜单项的单击事件,与onContextItem- Selected()类似。当系统销毁操作模式时,需要在onDestroyActionMode()方法中将actionMode变量设置为null。

(2)启动上下文操作模式在用户名的EditView控件的长按事件中调用startActionMode()启动上下文操作模式

调用startActionMode()方法返回ActionMode对象,通过该对象响应上下文操作栏的事件。

弹出菜单

弹出菜单PopMenu以垂直列表形式显示一系列操作选项,一般由控件元素触发,弹出菜单将显示在对应控件的上方或下方

弹出菜单适用于:

        ●为与特定内容密切相关的操作提供溢出式菜单;

        ●提供类似Spinner控件,但不保留永久选择的下拉菜单。

使用弹出菜单的步骤

(1)创建菜单资源文件

在res/menu目录中创建PopupMenu的XML资源文件。

(2)创建并加载弹出菜单

在EditText控件的单击事件onClick()方法中实例化PopupMenu对象,传递当前上下文对象及绑定的View对象,然后调用MenuInflater.inflate()方法加载菜单XML文件,调用PopupMenu的setOnMenuItemClickListener()设置单击菜单项的事件监听器,最后调用show()方法显示菜单。

(3)处理菜单项的OnMenuItemClick事件

MainActivity类实现PopupMenu.OnMenuItemClickListener接口,重写onMenuItemClick()回调方法,当用户选择菜单项时,系统调用onMenuItemClick()进行处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值