Android复习(二)应用资源——>菜单
菜单资源定义可通过 MenuInflater
进行扩充的应用菜单,包括选项菜单、上下文菜单和子菜单。
有关使用菜单的指南,请参阅菜单开发者指南。
- 文件位置:
res/menu/filename.xml
该文件名将用作资源 ID。- 编译后的资源数据类型:
- 指向
Menu
(或其子类)资源的资源指针。 - 资源引用:
- 在 Java 中:
R.menu.filename
在 XML 中:@[package:]menu.filename
- 语法:
-
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@[+][package:]id/resource_name"
android:title="string"
android:titleCondensed="string"
android:icon="@[package:]drawable/drawable_resource_name"
android:onClick="method name"
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
android:actionLayout="@[package:]layout/layout_resource_name"
android:actionViewClass="class name"
android:actionProviderClass="class name"
android:alphabeticShortcut="string"
android:alphabeticModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
android:numericShortcut="string"
android:numericModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
android:checkable=["true" | "false"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" />
<group android:id="@[+][package:]id/resource name"
android:checkableBehavior=["none" | "all" | "single"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" >
<item />
</group>
<item >
<menu>
<item />
</menu>
</item>
</menu>
- 元素:
-
<menu>
- 必需。该元素必须是根节点。包含
<item>
和/或<group>
元素。属性:
xmlns:android
- XML 命名空间。必需。定义 XML 命名空间,该命名空间必须为
"http://schemas.android.com/apk/res/android"
。
<item>
- 菜单项。可能包含
<menu>
元素(用于子菜单)。必须是<menu>
或<group>
元素的子元素。属性:
android:id
- 资源 ID。唯一资源 ID。要为此项创建新的资源 ID,请使用以下形式:
"@+id/name"
。加号表示应将其创建为新 ID。 android:title
- 字符串资源。字符串资源或原始字符串形式的菜单标题。
android:titleCondensed
- 字符串资源。字符串资源或原始字符串形式的压缩标题。此标题在正常标题过长的情况下使用。
android:icon
- 可绘制资源。用作菜单项图标的图片。
android:onClick
- 方法名称。点击此菜单项时调用的方法。此方法必须在 Activity 中声明为公共方法,并接受
MenuItem
作为其唯一参数,该参数指示所点击的项。此方法优先于对onOptionsItemSelected()
的标准回调。请参见页面结尾处的示例。警告:如果您使用 ProGuard(或类似工具)混淆代码,切记不要重命名在此属性中指定的方法,因为这样会破坏功能。
在 API 级别 11 中引入。
android:showAsAction
- 关键字。指示此项应在应用栏中显示为操作项的时机和方式。菜单项只有在 Activity 包含应用栏时才能显示为操作项。有效值:
值 说明 ifRoom
只有在应用栏中有空间的情况下,才将此项放置其中。如果没有足够的空间来容纳标记为 "ifRoom"
的所有项,则orderInCategory
值最低的项会显示为操作,其余项将显示在溢出菜单中。withText
此外,还会随操作项添加标题文本(由 android:title
定义)。您可以将此值与某个其他值一起作为标记集添加,用竖线|
分隔。never
不得将此项放在应用栏中,而应将其列在应用栏的溢出菜单中。 always
始终将此项放在应用栏中。除非此项必须始终显示在操作栏中,否则请勿使用该值。将多个项设置为始终显示为操作项,会导致它们与应用栏中的其他界面重叠。 collapseActionView
与此操作项相关联的操作视图(由 android:actionLayout
或android:actionViewClass
声明)是可收起的。
在 API 级别 14 中引入。如需了解详情,请参阅添加应用栏培训课程。
在 API 级别 11 中引入。
android:actionLayout
- 布局资源。用作操作视图的布局。
如需了解详情,请参阅操作视图和操作提供器。
在 API 级别 11 中引入。
android:actionViewClass
- 类名称。要用作操作视图的
View
的完全限定类名称。例如,"android.widget.SearchView"
表示将使用SearchView
作为操作视图。如需了解详情,请参阅操作视图和操作提供器。
警告:如果您使用 ProGuard(或类似工具)混淆代码,切记不要重命名在此属性中指定的类,因为这样会破坏功能。
在 API 级别 11 中引入。
android:actionProviderClass
- 类名称。要用于代替操作项的
ActionProvider
的完全限定类名称。例如,"android.widget.ShareActionProvider"
表示将使用ShareActionProvider
。如需了解详情,请参阅操作视图和操作提供器。
警告:如果您使用 ProGuard(或类似工具)混淆代码,切记不要重命名在此属性中指定的类,因为这样会破坏功能。
在 API 级别 14 中引入。
android:alphabeticShortcut
- 字符。字母快捷键的字符。
android:numericShortcut
- 整数。数字快捷键的数字。
android:alphabeticModifiers
- 关键字。菜单项的字母快捷键的辅助键。默认值对应于 Control 键。有效值:
值 说明 META
对应于 Meta 元键 CTRL 对应于 Control 元键 ALT 对应于 Alt 元键 SHIFT 对应于 Shift 元键 SYM 对应于 Sym 元键 FUNCTION 对应于 Function 元键 注意:您可以在一个属性中指定多个关键字。例如,
android:alphabeticModifiers="CTRL|SHIFT"
表示要触发相应的菜单项,用户需要同时按下 Control 和 Shift 元键以及快捷键。您可以使用
setAlphabeticShortcut()
方法以编程方式设置属性值。要详细了解alphabeticModifier
属性,请转到alphabeticModifiers
。 android:numericModifiers
- 关键字。菜单项的数字快捷键的辅助键。 默认值对应于 Control 键。有效值:
值 说明 META 对应于 Meta 元键 CTRL 对应于 Control 元键 ALT 对应于 Alt 元键 SHIFT 对应于 Shift 元键 SYM 对应于 Sym 元键 FUNCTION 对应于 Function 元键 注意:您可以在一个属性中指定多个关键字。例如,
android:numericModifiers="CTRL|SHIFT"
表示要触发相应的菜单项,用户需要同时按下 Control 和 Shift 元键以及快捷键。您可以使用
setNumericShortcut()
方法以编程方式设置属性值。要详细了解numericModifier
属性,请转到numericModifiers
。 android:checkable
- 布尔值。如果该项可勾选,则为“true”。
android:checked
- 布尔值。如果默认情况下该项为勾选状态,则为“true”。
android:visible
- 布尔值。如果默认情况下该项可见,则为“true”。
android:enabled
- 布尔值。如果默认情况下该项为启用状态,则为“true”。
android:menuCategory
- 关键字。对应于
Menu
CATEGORY_*
常量的值,这些常量用于定义项的优先级。有效值:值 说明 container
这类项归属于容器。 system
这类项由系统提供。 secondary
这类项是用户提供的次要(不常用)选项。 alternative
这类项是对当前显示的数据的替代操作。 android:orderInCategory
- 整数。项在组内的“重要性”顺序。
<group>
- 一个菜单组,用于创建一组具有相同特征(例如是否可见、是否启用或是否可勾选)的项。包含一个或多个
<item>
元素。必须是<menu>
元素的子元素。属性:
android:id
- 资源 ID。唯一资源 ID。要为此项创建新的资源 ID,请使用以下形式:
"@+id/name"
。加号表示应将其创建为新 ID。 android:checkableBehavior
- 关键字。组的可勾选行为类型。有效值:
值 说明 none
不可勾选 all
可以勾选所有项(使用复选框) single
只能勾选一项(使用单选按钮) android:visible
- 布尔值。如果组可见,则为“true”。
android:enabled
- 布尔值。如果组为启用状态,则为“true”。
android:menuCategory
- 关键字。对应于
Menu
CATEGORY_*
常量的值,这些常量用于定义组的优先级。有效值:值 说明 container
这类组归属于容器。 system
这类组由系统提供。 secondary
这类组是用户提供的次要(不常用)选项。 alternative
这类组是对当前显示的数据的替代操作。 android:orderInCategory
- 整数。项在类别中的默认顺序。
- 示例:
- 保存在
res/menu/example_menu.xml
的 XML 文件:<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/item1"
android:title="@string/item1"
android:icon="@drawable/group_item1_icon"
app:showAsAction="ifRoom|withText"/>
<group android:id="@+id/group">
<item android:id="@+id/group_item1"
android:onClick="onGroupItemClick"
android:title="@string/group_item1"
android:icon="@drawable/group_item1_icon" />
<item android:id="@+id/group_item2"
android:onClick="onGroupItemClick"
android:title="@string/group_item2"
android:icon="@drawable/group_item2_icon" />
</group>
<item android:id="@+id/submenu"
android:title="@string/submenu_title"
app:showAsAction="ifRoom|withText" >
<menu>
<item android:id="@+id/submenu_item1"
android:title="@string/submenu_item1" />
</menu>
</item>
</menu>
以下应用代码会通过
onCreateOptionsMenu(Menu)
回调扩充菜单,还会声明其中两个项的点击回调:java代码: public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example_menu, menu);
return true;
} public void onGroupItemClick(MenuItem item) {
// One of the group items (using the onClick attribute) was clicked
// The item parameter passed here indicates which item it is
// All other menu item clicks are handled by <code><a href="/reference/android/app/Activity.html#onOptionsItemSelected(android.view.MenuItem)">onOptionsItemSelected()</a></code>
} kotlin代码: override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.example_menu, menu)
return true
} fun onGroupItemClick(item: MenuItem) {
// One of the group items (using the onClick attribute) was clicked
// The item parameter passed here indicates which item it is
// All other menu item clicks are handled by <code><a href="/reference/android/app/Activity.html#onOptionsItemSelected(android.view.MenuItem)">onOptionsItemSelected()</a></code>
}
Android复习(二)应用资源——>菜单的更多相关文章
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- Android <Android应用开发实战> 资源类型<二>
1.菜单资源菜单不仅可以在onCreateContextMenu或onCreateOptionsMenu方法中通过代码创建,还可以在res/menu目录中建立相应的菜单资源文件,并在上面两个方法中加载 ...
- Android进阶(二十六)MenuInflater实现菜单添加
MenuInflater实现菜单添加 前言 之前实现的Android项目中可以实现菜单的显示.但是再次调试项目时发现此功能已无法实现,很是令人费解.难道是因为自己手机Android系统的问题?尝试通过 ...
- Android 打造炫目的圆形菜单 秒秒钟高仿建行圆形菜单
原文:Android 打造炫目的圆形菜单 秒秒钟高仿建行圆形菜单 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43131133, ...
- Android:有关下拉菜单导航的学习(供自己参考)
Android:有关==下拉菜单导航==的学习 因为先前的学习都没想着记录自己的学习历程,所以该博客才那么迟才开始写. 内容: ==下拉菜单导航== 学习网站:android Spinner控件详解 ...
- Android 控件 之 Menu 菜单
http://www.cnblogs.com/Mrs-cc/archive/2012/07/21/2603042.html 1.OptionsMenu (选项菜单)用法总结 使用方法: 方法一:添 ...
- 【转】android创建Popwindow弹出菜单的两种方式
方法一的Activity package com.app.test02; import android.app.Activity; import android.os.Bundle; import a ...
- Android进阶(二十)AndroidAPP开发问题汇总(四)
· Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...
- Android开发 ---xml构建选项菜单、上下文菜单(长按显示菜单)、发通知、发送下载通知
1.activity_main.xml 描述: 定义了一个TextView和三个按钮 <?xml version="1.0" encoding="utf-8&quo ...
- Android生成二维码--保存和分享二维码图片
之前写过生成自定义二维码的两篇文章:<Android生成自定义二维码><Android生成二维码–拍照或从相册选取图片>,下面就介绍一下Android应用内如何保存以及分享二维 ...
随机推荐
- attention机制、LSTM二者之间,是否存在attention一定优于LSTM的关系呢?
这里没有严格的论证,只是自己的一些理解. attention机制下的Transformer确实是当前AI技术中最为火热的,基于其构建的大语言模型可以说是AI技术至今最强的技术之一了,但是attenti ...
- Apache DolphinScheduler-3.2.0集群部署教程
集群部署方案(2 Master + 3 Worker) Apache DolphinScheduler官网:https://dolphinscheduler.apache.org/zh-cn Apac ...
- win指令学习收集
要执行多句,需要用到逻辑判断 1 & 2 1成不成功都会执行2 1 && 2 1成功才会执行2 1 || 2 1不成功才会执行2
- 简单理解.net 依赖注入的三种方式
前言 :.NET5.0 于2020年11月10日正式发布,它是3.1之后的 .NET Core 的下一个主要版本.微软将这个新版本命名为 .NET 5.0 而不是 .NET Core 4.0,其原因有 ...
- 【GaussDB】应用报错 socket is not closed; Urgent packet sent to backend successfully; An I/O error occured while sending to the backend.detail:EOF Exception;
数据库原理差异 会话空闲时间超过sesseion_time后,数据库主动断开,客户端再发起请求,就会报此类错误: 当一个会话连接长时间没有执行SQL或者活动时,会将该会话释放,可以释放缓存避免出现例如 ...
- 2024DASCTF
DASCTF prese 一眼控制了平坦化,可以用d810梭一下 跟进一下main_crypto这个函数 主要是两部分,第一部分是生成一个256大小的数组,通过输入的长度和遍历生成的一个数组 第二部分 ...
- vim命令之多行注释
vim常用命令之多行注释和多行删除 vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率. 1.多行注释: 1. 首先按esc进入命令行模式下,按下Ctrl + v, ...
- 录音转文字SDK哪家强?
最近在做一款录音App,有一个模块是录音转文字功能,于是对比了市面上常见的API,国内做的比较大的主要有讯飞.腾讯.阿里.百度.华为. 讯飞 讯飞在国内做语音SDK是做的比较早的,翻译出来的准确率挺不 ...
- 人脸伪造图像检测:Deepfake魔高一尺,TextIn道高一丈
只因开了一个视频会议,直接被骗1.8个亿 今年2月,一家跨国公司的香港分公司财务人员被一场精心策划的Deepfake视频会议诈骗,导致公司损失2亿港币(约1.8亿人民币). 事件起因是财务人员收到 ...
- TimesURL: 用于通用时间序列表征学习的自监督对比学习《TimesURL: Self-supervised Contrastive Learning for Universal Time Series Representation Learning》模型代码运行解析
现在是2024年3月25日16:17,打算好好的跑一个模型的代码,之前都没有系统性的过一遍,打算拿这个模型的代码开刀,Go,环境和乱七八糟的已经配好了. 关于这篇论文,之前写了博客,里面也有Githu ...