• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android学习笔记(34):Android菜单

Android学习笔记(34):Android菜单

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Android学习笔记(34):Android菜单等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android学习笔记(34):Android菜单


Android的菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)。

选项菜单(Option Menu):按设备上的菜单按钮(Menu)会出现的菜单。不支持勾选标记。

上下文菜单(Context Menu):长按某个组件会出现的菜单。不支持菜单项图标。

子菜单(SubMenu):就是子菜单。不支持菜单项图标,不支持嵌套子菜单。

Menu类用于添加菜单项和子菜单的方法是add()和addSubMenu():

MenuItem add(CharSequence title):添加一个菜单项

MenuItem add(int groupId, int itemId, int order, int titleRes):添加一个处于groudId组的菜单项

MenuItem add(int titleRes):添加一个菜单项

MenuItem add(int groupId, int itemId, int order, CharSequence title):添加一个处于groudId组的菜单项

SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title):添加一个处于groudId组的子菜单

SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes):添加一个处于groudId组的子菜单

SubMenu addSubMenu(CharSequence title):添加一个子菜单

SubMenu addSubMenu(int titleRes):添加一个子菜单

 

 

(1)选项菜单的创建方法:

1、重写Activity的onCreateOptionsMenu(Menu menu)方法。

2、调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法为菜单项设置图标。

3、重写Acitivy的onOptionsMenuSelected()方法为菜单设置事件监听。

 

(2)子菜单的创建方法:

1、重写Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单。

2、调用SubMenu的add()方法,添加子菜单项。

3、重写onCreateItemSelected()方法,为菜单设置监听事件。

 

SubMenu类还提供了额外的方法来设置菜单头的信息:

SubMenu setHeaderIcon(Drawable icon):设置菜单头的图标。

SubMenu setHeaderIcon(int iconRes):设置菜单头的图标。

SubMenu setHeaderTitle(CharSequence title):设置菜单头的标题。

SubMenu setHeaderTitle(int titleRes):设置菜单头的标题。

SubMenu setHeaderView(View view):使用View组件设置菜单头。

 

(3)上下文菜单的创建方法:

1、重写Activity的onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo)方法,View参数设置的是触发上下文菜单的组件。

2、调用Menu的add()方法添加菜单项MenuItem

3、重写onContextItemSelected()方法,为上下文菜单设置事件监听。

4、调用registerForContextMenu(View)方法,为View组件注册上下文菜单。

同样我们可以用setHeaderIcon()、setHeaderTitle()方法为上下文菜单设置图标、标题。

(4)为菜单项设置事件监听:

我们重写Activity的onCreateItemSelected()方法来设置事件监听,一般我们用switch方法判断是哪个菜单项被单击,所以我们需要为每个菜单项设置一个id,以方便判断。

当然我们还有另一个方法就,就是为每个菜单项绑定监听器,用setOnMenuItemClickListener()方法,但这样做是很麻烦的,不推荐。

(5)设置单选菜单项和多选菜单项:

setCheckable(boolean checkable):设置该菜单项可否被勾选。

setGroupCheckable(int group,boolean checkable,boolean exclusive):设置group组的菜单项是否可以被勾选,如果exclu设置为true,那么该组为单选菜单项。

 

(6)为菜单项设置快捷键(现在好像没什么用了):

setAlphabeticShortcut(char alphaChar):设置字母快捷键。

setNumericShortcut(char numericChar):设置数字快捷键。

setShortcut(char numericChar, char alphaChar):同时设置两种快捷键。

 

(7)设置与Activity关联的菜单项:

用于单击某个菜单项时可以跳转到其他Activity。

用setIntent(Intent intent)方法。

 

(8)使用XML文件创建菜单:

创建方法是

1.在res文件下面的menu文件目录下创建菜单的xml文件。

2.在Activity的onCreateOptionsMenu()方法或onCreateContextMenu()方法中用inflate(int menuRes, Menu menu)方法加载对应资源。

3.重写Activity相关的事件监听方法。

 

menu文件夹下的xml有如下的规则:

1.根元素是,没有多余的属性。

2.将多个菜单项包装成一个菜单组。

可以设置如下属性:

checkableBehavior:菜单项额选择行为,none(不可选)、all(多选)、single(单选)。

menuCategory:指定菜单项的优先级,container、system、secondary和alternative。

visible:是否可见

enable:是否可用

3.用于定义菜单项,内部可包含,就成了子菜单。

可以设置的属性如下:

android:id:设置ID

android:title:设置标题

android:icon:设置图标

android:alphabeticShortcut:设置字母快捷键

android:numbericShortcut:设置数字快捷键

android:checkable:是否可选

android:checked:是否选中

android:visible:是否可见

android:enable:是否可用

 

(9)弹出式菜单PopupMenu

创建步骤如下:

1、new PopupMenu(Context context,View anchor)创建弹出式菜单,anchor参数表示触发菜单的组件。

2、调用MenuInflater的inflate()方法加载菜单资源。

3、调用PopupMenu的show()方法显示弹出式菜单。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-26如何取得nginx做反向代理时的真实IP?
  • 2017-05-26ionic 配置环境变量及创建新项目,ionic新项目
  • 2017-05-26TabLayout和ViewPager简单实现页卡的滑动,tablayoutviewpager
  • 2017-05-26android:省市二级联动下拉框
  • 2017-05-26Android Activity的生命周期简单总结
  • 2017-05-26安卓界面组件----列表视图,安卓组件----视图
  • 2017-05-26location of the android sdk has not been setup in the preferences,androidpreferences
  • 2017-05-26解决关于 在android studio 出现的 DELETE_FAILED_INTERNAL_ERROR Error while Installing APK 问题,whileinstallingapk
  • 2017-05-26项目优化之热更新,项目优化
  • 2017-05-26Linux目录与文件权限的意义

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • android红米等关于读取本地文件夹图片获取路径的问题的解决,
    • Android接入微信支付完全解析,太全了~
    • TiemPicke 和 DatePicker控件 自定义大小
    • Intent(三)向下一个活动传递数据,intent传递
    • Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset,n7.1.1headset
    • Android 手机卫士--绑定sim卡序列号,androidsim
    • 使用C++实现QML的TreeView Model (二)
    • 安卓开发树形控件之ExpandableListView(一),expandablelistview
    • Android开发学习——android存储,android开发存储
    • Android WebView File域同源策略绕过漏洞浅析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有