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、重写ActivityonCreateOptionsMenu(Menu menu)方法。

2、调用Menuadd()方法添加菜单项(MenuItem),可以调用MenuItemsetIcon()方法为菜单项设置图标。

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

 

2)子菜单的创建方法:

1、重写ActivityonCreateOptionsMenu()方法,调用MenuaddSubMenu()方法添加子菜单。

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

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、重写ActivityonCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo)方法,View参数设置的是触发上下文菜单的组件。

2、调用Menuadd()方法添加菜单项MenuItem

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

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

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

 

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

我们重写ActivityonCreateItemSelected()方法来设置事件监听,一般我们用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.在ActivityonCreateOptionsMenu()方法或onCreateContextMenu()方法中用inflate(int menuRes, Menu menu)方法加载对应资源。

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

 

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

1.根元素是<menu.../>,没有多余的属性。

2.<group.../>将多个菜单项<item.../>包装成一个菜单组。

可以设置如下属性:

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

menuCategory:指定菜单项的优先级,containersystemsecondaryalternative

visible:是否可见

enable:是否可用

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

可以设置的属性如下:

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、调用MenuInflaterinflate()方法加载菜单资源。

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

目录
相关文章
|
7月前
|
XML API Android开发
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
本文介绍了如何使用androidx.preference库快速创建具有一级和二级菜单的Android设置界面的步骤和示例代码。
209 1
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
|
9月前
|
XML Java Android开发
34. 【Android教程】菜单:Menu
34. 【Android教程】菜单:Menu
200 2
|
9月前
|
开发工具 Android开发 开发者
Android Studio中两个让初学者崩溃菜单
Android Studio中两个让初学者崩溃菜单
65 0
|
10月前
|
XML Android开发 数据格式
android 12 添加菜单
android 12 添加菜单
67 0
|
7月前
|
API Android开发
Android使用AlertDialog实现弹出菜单
本文分享了在Android开发中使用AlertDialog实现弹出菜单的方法,并通过代码示例和错误处理,展示了如何避免因资源ID找不到导致的crash问题。
98 1
|
10月前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
|
10月前
|
Java Android开发
Android 长按电源键弹出的GlobalActions菜单
Android 长按电源键弹出的GlobalActions菜单
252 1
|
10月前
|
消息中间件 缓存 架构师
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
|
10月前
|
Java Android开发
Android 长按桌面显示菜单的代码
Android 长按桌面显示菜单的代码
67 0
|
Android开发
Android 中选项菜单(Option menu)的用法
Android 中选项菜单(Option menu)的用法
250 0

热门文章

最新文章

  • 1
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    Android历史版本与APK文件结构
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 4
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡