菜单操作实例讲解

作者:创世魂

 

● 菜单操作准备工作

 

准备工作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无效)。

 

● 清除菜单头

本方法顾名思义,就是清除菜单头部信息(标题或图标)。

调用方式和前几方法的一样。

但是因“本方法”不能在外部调用,所以存在的意义不大,因此不做讲解。