作者:创世魂
● 菜单操作准备工作
准备工作1:
放一个“线性布局器”,右侧属性设置“横向布局”。
“线性布局器”内放置两个“按钮”。
最后“线性布局器”的外侧,放一个文本框。
注意:菜单操作位于“安卓基本类”模块中,必须添加此模块才能使用。
准备工作2:
保存“布局”后,在“代码编辑器”界面如下图所示,分别给“按钮1”和“按钮2”,这是“按钮”的“内容”(也就是标题)。
为了方便区分,可以给“文本框”设置一个“白色”背景。
黄色箭头指向的按钮,可以弹出“颜色选择器”,不需要手动输入“颜色值”。
准备工作3:
“右键”选择“启动类窗口”虚拟方法。
选择“通知_初始化选项菜单”,点击“添加”
添加后会自动在“代码编辑区”出现如下图所示的“表格”代码。
重新打开“启动类窗口”虚拟方法,选择“通知_菜单项被选择”,点击“添加”。
添加后会自动生成“如下图”所示的“表格代码”。
重新打开“启动类窗口”虚拟方法,选择“通知_初始化组件上下文菜单”,点击“添加”。
添加后会自动生成“如下图”所示的“表格代码”。
● 加入菜单项
帮助文档如下图:
打开后可以看到“本方法”有四个参数和一个“菜单项”返回值,并且“本方法”也支持“动态调用”。
参数4:有默认值“-1”,并且有“三个”整数值可以填写,分别代表“不同的意思”。
代码编写如下图:
我们在“通知_初始化选项菜单”方法下,可以利用“本方法”添加“菜单”。
这里不需要“创建变量”,因为本“虚拟方法”有“菜单”参数,直接用“选项菜单”加本方法名即可添加。
无论是“变量”形式调用,还是下面的“参数”形式调用,均属于“动态调用”。
动态调用“参数1”可以省略不写,也不用“逗号”隔开。
所以下图代码直接输入“参数2的ID值”。
在“菜单2”可以设置一个“参数4”为选中状态。
运行效果如下图:
左图:可以看到“左上角”有三个点的“按钮”,这个就是“菜单”按钮。
右图:点击后就成功的“显示菜单”,并且“菜单2”也是“选中”状态。
设置“菜单”被选择事件:
在“通知_菜单项被选择”虚拟方法下。
用“如果”判断“是否为上下文菜单”等于“假”。
最后用参数“所选择菜单项.标题”就可以取出“被单击选择”菜单的标题。
● 加入菜单项2
帮助文档如下图:
打开后可以看到“本方法”只有“两个”参数,没有返回值。
代码编写如下图:
依然是“通知_初始化选项菜单”方法下。
创建一个“菜单信息”变量,然后利用“本变量”来进行“菜单添加”工作。
随便加入“三个菜单”后,利用“菜单”的“加入菜单项2”方法。
把创建的“菜单信息”变量名称写入“参数”,就可以创建这些“菜单”。
运行效果如下图:
● 查找菜单项点击“菜单按钮”后就成功的“显示菜单”,并且“菜单信息3”也是“选中”状态。
帮助文档如下图:
打开后可以看到“本方法”有“两个”参数,和一个“菜单项”返回值。
不存在会返回“空对象”。
代码编写如下图:
首先我们需要在“成员变量”中定义一个“菜单”变量设置“参考”。
然后在“通知_初始化选项菜单”的虚拟方法中,随便加入几个菜单。
最后把参数“选项菜单”赋值给定义的“菜单1”成员变量。
创建“按钮_被单击”接收事件,在事件内指定来源对象“按钮1”。
定义“菜单项”变量,设置参考。
然后用定义的“菜单1”成员变量,使用本方法“查找菜单项”,例如:我们这里查找“3”。
最后可以用“菜单项变量”来取出查找到的“菜单项”的标题。
运行效果如下图:
点击“按钮1”成功找到“菜单3”。
● 关闭菜单
帮助文档如下图:
可以看到只有一个“参数”,没有“返回值”。
顾名思义就是关闭一个打开的“菜单”。
代码如下图:
我们直接在“查找菜单项”的基础上,把“按钮”被单击下的改成“关闭菜单”即可。
● 删除菜单项
帮助文档如下图:
可以看到有“两个”参数,没有“返回值”。
顾名思义,就是“删除”指定“ID”的菜单项。
代码编写如下图:
我们只需要把“关闭菜单”的代码改成“删除菜单项”即可。
因是动态调用,所以“参数1”不用写,直接写“参数二”,这里我“删除ID2”。
运行效果如下图:
执行后打开菜单,会发现“菜单2”已经被“删除”了。
● 删除所有菜单项
帮助文档如下图:
可以看到只有“一个参数”,没有“返回值”,如果“动态”调用本方法,这个参数可以直接忽略。
顾名思义就是删除所有项目,清空菜单。
代码编写如下图:
我们只需要在“删除菜单项”的基础上,把代码改成“删除所有菜单项”即可。
● ID
帮助文档如下图:
本方法是“属性读方法”,虽然可以看到一个“参数”,但是通常情况下这个参数都是直接“省略”即可。
顾名思义,就是读指定“菜单项”的ID值。
代码编写如下图:
例如:我们使用“菜单1”新增一个菜单出来。
然后直接用“菜单项变量.ID”就可以直接取出“ID值”(注意属性读写方法均没有括号)
运行效果如下图:
执行后成功返回“新加入菜单”的“ID”。
● 标题(写)
帮助文档如下图:
上面说了,“属性读写”均没有括号,所以这里的“参数”直接忽略。
“写方法”类似于赋值形式,直接“等号”加“参数二”即可。
代码编写如下图:
例如:我们查找“菜单3”。
查找后直接用属性“标题”后面直接跟着“等号”和“字符串”就可以。
运行效果如下图:
执行后打开菜单,会发现菜单的“初始值”已经被修改了。
● 标题(读)
帮助文档如下图:
“属性读方法”直接返回标题。
代码编写如下图:
例如:我们查找“菜单2”。
找到后直接用“菜单项变量.标题”就可以取出标题。
运行效果如下图:
执行后打开菜单,成功把“菜单标题”取出。
● 可被选中(写)
帮助文档如下图:
顾名思义,就算设置一个菜单项是否可以选中。
代码编写如下图:
例如:我们设置“菜单1”可以选中,查找到“菜单1”的菜单项后直接设置“本属性”等于“真”即可。
运行效果如下图:
执行后“按钮1”后,可以发现“菜单1”出现了选择模式。
● 可被选中(读)
帮助文档如下图:
顾名思义,就是“读取”一个菜单项,是否有选中功能。
代码编写如下图:
我们“菜单项”变量放到“如果”外面。
然后“按钮1”判断“菜单3”,“按钮2”判断“菜单2”。
运行效果如下图:
左图:点击“按钮1”提示“菜单3”可以被选中。
右图:点击“按钮2”,因“菜单2”初始化的时候并没有设置“选中”,所以这里只会提示“不可选中”。
● 可视(写)
帮助文档如下图:
顾名思义,写指定“菜单项”的“是否可视”。
代码编写如下图:
例如:我们查找“菜单3”。
找到后直接“菜单项变量.可视 = 假”即可。
运行效果如下图:
执行后打开菜单,会发现“菜单三”成功隐藏。
● 可视(读)
帮助文档如下图:
顾名思义,就是“读取”菜单项的“可视状态”。
代码编写如下图:
我们把“变量”和“查菜单”结果都放在“如果”的外面。
“按钮1”被点击直接判断“是否可视”。
“按钮2”判断之前我们设置一个“假”,然后进行判断“是否可视”。
运行效果如下图:
左图:点击“按钮1”后提示“菜单2”可视。
右图:点击“按钮2”后则会提示“菜单2”看不见。
● 许可(写)
帮助文档如下图:
顾名思义,就是设置指定“菜单项”是否可用(可以理解为“是否被禁止”点击)。
代码编写如下图:
直接指定“来源对象”然后“变量名.许可=假”即可。
运行效果如下图:
执行后打开菜单,会发现“菜单2”已经被“禁止”使用了。
● 许可(读)
帮助文档如下图:
顾名思义,就是判断指定“菜单项”是否被禁止。
代码编写如下图:
直接用“如果”命令判断即可,注意是“双等号”。
运行效果如下图:
执行后“按钮1”后,会提示“可以选择”,证明“菜单三”并没有被禁止。
● 选中(写)
帮助文档如下图:
顾名思义,设置指定“菜单项”是否被选中。
注意:前提必须保证“可被选中”属性等于“真”,或者“加入菜单项”的时候,“菜单项选中状态”的参数不为“-1”。
代码编写如下图:
直接“查找菜单项”最后设置是否被选中即可。
运行效果如下图:
执行“按钮1”后,可以看到“菜单三”的选中状态已经不见了。
● 选中(读)
帮助文档如下图:
顾名思义,读取指定“菜单项”是否被选中。
代码编写如下图:
直接用“如果”进行判断即可。
运行效果如下图:
因“菜单三”创建的时候就设置了“选中”,所以执行后“菜单三”是“选中状态”。
● 菜单项ID
帮助文档如下图:
打开帮助内容,可以看到这是一个“整数”的“变量值”,用来设置“菜单项”的“id”。
代码编写如下图:
依然是“按钮被单击”事件下面填写,创建一个“菜单项信息”变量。
然后“变量名”+“菜单项ID”=您要设置的菜单项id。
此id不能和“初始化”中的菜单“id”重复。
然后将整个“变量值”填入“加入菜单项”的参数中。
运行效果如下图:
执行按钮后,可以看到新的“菜单”也成功创建。
● 菜单项标题
帮助文档如下图:
它和“菜单项ID”一样,是一个“成员变量值”。
代码编写如下图:
使用方法和“菜单项ID”一样,您也可以同时在这里设置“菜单项ID”。
运行效果如下图:
点击“按钮1”后,新的菜单成功添加。
● 菜单项选中状态
帮助文档如下图:
它和“菜单项ID”一样,是一个“成员变量”。
代码编写如下图:
用法和“菜单项ID”一样,您也可以同时设置“标题”和“ID”,根据实际需求填写。
运行效果如下图:
新的菜单成功创建,并且选中状态存在。
● 菜单项数组
帮助文档如下图:
它是一个“成员变量”。
代码编写如下图:
设置一个“菜单信息”变量和“菜单项信息”变量。
然后“菜单项信息”分别设置好“id、标题、选中状态”。
随后就可以用上“菜单项数组”变量,利用“数组”的添加成员方法,可以吧“菜单项信息”添加进去。
最后可以利用“菜单1”的“加入菜单项2”的方法添加菜单。
运行效果如下图:
可以看到“新的标题”成功添加,并且也设置的选中状态。
● 加入菜单项
帮助文档如下图:
可以看到本方法和“菜单”的“加入菜单项”基本没区别。
不同之处就是本方法是新建了一个菜单,并且不需要进行菜单初始化就可以创建。
代码编写如下图:
创建一个“菜单信息”变量,然后直接用本方法“加入菜单”即可。
因为是“新菜单”所以这里的“id值”自己随便定,只要保证“新菜单”内的“id值”不重复即可。
最后可以利用“组件”的弹出菜单功能,进行菜单的“弹出”。
运行效果如下图:
可以看到“按钮1”点击后“按钮2”下面会弹出菜单,如果绑定的是“图片”就会在“图片”上弹出菜单。
● 删除所有菜单项
帮助文档如下图:
顾名思义,就是“删除所有菜单”。
代码编写如下图:
例如,我们随便创建几个菜单,然后调用“本方法”。
运行效果如下图:
可以看到点击“按钮1”,菜单“不会弹出”,也就间接证明,菜单被全部删除。
● 是否为空
帮助文档如下图:
顾名思义,就是判断菜单是否为空。
代码编写如下图:
在“按钮1”下面添加菜单,“按钮2”下面不添加任何菜单。
运行效果如下图:
左图:点击“按钮1”就会提示有菜单。
右图:点击“按钮2”提示没有。
● 准备工作
如下图:
我们在“通知_初始化组件上下文菜单”虚拟方法下面,随便添加几个“上下文菜单”。
“上下文菜单”添加的方法和其它“菜单”添加方法没区别。
如下图:
我们在“通知_被创建”方法下“开启上下文菜单支持”,参数填写我们早就设置好的“文本框1”。
运行如下图:
运行后长按“文本框1”就可以弹出“上下文菜单”。
备注:不同“安卓系统”弹出的“位置”和“样式”可能有所差别。
● 置头部标题
帮助文档如下图:
顾名思义,就是给“上下文菜单”设置一个标题。
代码编写如下图:
直接在加菜单的结尾用“本方法”添加标题即可。
备注:“菜单标题”只能在“上下文菜单初始化”的时候进行设置。
运行效果如下图:
运行后长按“文本框1”菜单成功弹出,并且“标题”也显示出来了。
● 置头部图标
帮助文档如下图:
顾名思义,给“头部菜单”增加一个图标。
代码编写如下图:
定义一个类型为“可绘制资源”的局部变量,黄色圈内的“按钮”点击选择一个“图片”,注意必须保证是“字母”名称。
然后利用“本方法”,设置图标即可,本方法并不会清除“菜单标题”。
本方法同样只能在“菜单初始化”这里调用。
运行效果如下图:
运行后可以看到“菜单标题”的前面多了一个设置的“图标”。
● 置头部视图
帮助文档如下图:
可以看到有两个参数,顾名思义就是给“菜单头部”设置一个“组件”,并且支持动态调用。
代码编写如下图:
定义一个类型为"按钮"的局部变量,属性名写“内容”属性值填写“按钮标题”。
然后利用"本方法"把“新按钮”填入参数内即可。
运行效果如下图:
运行后可以看到设置的“菜单标题”消失,取而代之的是一个“按钮”。
备注:本方法“安卓高版本”无效(已知:安卓8.0无效)。
● 清除菜单头
本方法顾名思义,就是清除菜单头部信息(标题或图标)。
调用方式和前几方法的一样。
但是因“本方法”不能在外部调用,所以存在的意义不大,因此不做讲解。