Android Menu菜单的设定

菜单主要分为三类,选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu)。

1.选项菜单Option Menu

当用户单击软件上的菜单按钮,触发事件弹出的菜单框就是选项菜单。如图:

布局为在res文件夹下新建一个menu文件夹,在此文件夹下建xml文件。

布局代码大致如下:

 <?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><itemandroid:id="@+id/mune_enter"android:orderInCategory="100"android:title="选项一"app:showAsAction="never"/> <!-- 主要针对这个菜单的显示 --><itemandroid:id="@+id/mune_setting"android:orderInCategory="100"android:title="选项二"app:showAsAction="never"/><itemandroid:id="@+id/mune_out"android:orderInCategory="100"android:title="选项三"app:showAsAction="never"/></menu>

showAsAction主要针对这个菜单的显示,它有三个选项:

always:总是显示在界面上

never:不显示在界面上,只让出现在右边的三个点中

ifRoom:如果有位置才显示,不然就出现在右边的三个点中

Java代码:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//导入菜单布局public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}//点击菜单项的触发事件public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.mune_enter:Toast.makeText(this, "点击选项一", Toast.LENGTH_SHORT).show();break;case R.id.mune_setting:Toast.makeText(this, "点击选项二", Toast.LENGTH_SHORT).show();break;case R.id.mune_out:Toast.makeText(this, "点击选项三", Toast.LENGTH_SHORT).show();break;default:break;}return super.onOptionsItemSelected(item);}
}

2.上下文菜单Context Menu 

当用户长按Activity页面时,弹出的菜单被称为上下文菜单。一般情况下ContextMenu常用于ListView或者GridView。如图:

 布局大致如下:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public boolean onCreateOptionsMenu(Menu menu){
        SubMenu fileMenu = menu.addSubMenu("查看");
        SubMenu editMenu = menu.addSubMenu("输入");
        //添加菜单项
        fileMenu.add(1, 1, 1, "查看1");
        fileMenu.add(1, 2, 1, "查看2");
        fileMenu.add(1, 3, 1, "查看3");
        editMenu.add(2, 1, 1, "输入1");
        editMenu.add(2, 2, 1, "输入2");
        editMenu.add(2, 3, 1, "输入3");
        return super.onCreateOptionsMenu(menu);
}
//创建点击事件
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getGroupId() == 1) {
             switch (item.getItemId()) {
                 case 1:
                     Toast.makeText(this, "点击了查看1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了查看2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了查看3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                     break;
             }
         } else if (item.getGroupId() == 2) {
             switch (item.getItemId()) {
                 case 1:
                    Toast.makeText(this, "点击了输入1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了输入2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了输入3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                    break;
            }
         }
         return super.onOptionsItemSelected(item);
     }
 }

JAVA代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public boolean onCreateOptionsMenu(Menu menu){
        SubMenu fileMenu = menu.addSubMenu("查看");
        SubMenu editMenu = menu.addSubMenu("输入");
        //添加菜单项
        fileMenu.add(1, 1, 1, "查看1");
        fileMenu.add(1, 2, 1, "查看2");
        fileMenu.add(1, 3, 1, "查看3");
        editMenu.add(2, 1, 1, "输入1");
        editMenu.add(2, 2, 1, "输入2");
        editMenu.add(2, 3, 1, "输入3");
        return super.onCreateOptionsMenu(menu);
}
//创建点击事件
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getGroupId() == 1) {
             switch (item.getItemId()) {
                 case 1:
                     Toast.makeText(this, "点击了查看1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了查看2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了查看3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                     break;
             }
         } else if (item.getGroupId() == 2) {
             switch (item.getItemId()) {
                 case 1:
                    Toast.makeText(this, "点击了输入1", Toast.LENGTH_SHORT).show();
                     break;
                 case 2:
                     Toast.makeText(this, "点击了输入2", Toast.LENGTH_SHORT).show();
                     break;
                 case 3:
                     Toast.makeText(this, "点击了输入3", Toast.LENGTH_SHORT).show();
                     break;
                 default:
                    break;
            }
         }
         return super.onOptionsItemSelected(item);
     }
 }

3.子菜单Sub Menu

它就是将功能相同的操作进行分组显示,作用在选项菜单上,是选项菜单的二级菜单。如图:

子菜单的布局依靠代码实现,layout中并未体现。

JAVA代码:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public boolean onCreateOptionsMenu(Menu menu){SubMenu fileMenu = menu.addSubMenu("查看");SubMenu editMenu = menu.addSubMenu("输入");//添加菜单项fileMenu.add(1, 1, 1, "查看1");fileMenu.add(1, 2, 1, "查看2");fileMenu.add(1, 3, 1, "查看3");editMenu.add(2, 1, 1, "输入1");editMenu.add(2, 2, 1, "输入2");editMenu.add(2, 3, 1, "输入3");return super.onCreateOptionsMenu(menu);
}
//创建点击事件
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getGroupId() == 1) {switch (item.getItemId()) {case 1:Toast.makeText(this, "点击了查看1", Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(this, "点击了查看2", Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(this, "点击了查看3", Toast.LENGTH_SHORT).show();break;default:break;}} else if (item.getGroupId() == 2) {switch (item.getItemId()) {case 1:Toast.makeText(this, "点击了输入1", Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(this, "点击了输入2", Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(this, "点击了输入3", Toast.LENGTH_SHORT).show();break;default:break;}}return super.onOptionsItemSelected(item);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/315643.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

规范书写 26 个英语字母

规范书写 26 个英语字母 1. 四线三格2. 字母的笔顺3. 英语字母的印刷体与手写体References 1. 四线三格 中文使用米字格或田字格规范汉字的格式&#xff0c;而英语则是以四线三格来规范字符的格式。 (1) 字母应稍向右倾斜&#xff0c;约为 5 ∘ 5^{\circ} 5∘&#xff0c;斜…

媒体捕捉-拍照

引言 在项目开发中&#xff0c;从媒体库中选择图片或使用相机拍摄图片是一个极为普遍的需求。通常&#xff0c;我们使用UIImagePickerController来实现单张图片选择或启动相机拍照。整个拍照过程由UIImagePickerController内部实现&#xff0c;无需我们关心细节&#xff0c;只…

【MySQL】数据库之主从复制和读写分离

目录 一、什么是读写分离&#xff1f; 二、为甚要读写分离&#xff1f; 三、什么时候需要读写分离&#xff1f; 四、主从复制与读写分离 五、MySQL支持的二进制日志格式 六、主从复制的工作原理 七、MySQL读写分离的原理 八、MySQL读写分离的方式有哪些 九、实验一&am…

Leetcode 63 不同路径 II

题意理解&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 要求&#xff1a;机器人只能…

计算机基础面试题 |03.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

五、Spring AOP面向切面编程(基于注解方式实现和细节)

本章概要 Spring AOP底层技术组成初步实现获取通知细节信息切点表达式语法重用&#xff08;提取&#xff09;切点表达式环绕通知切面优先级设置CGLib动态代理生效注解实现小结 5.5.1 Spring AOP 底层技术组成 动态代理&#xff08;InvocationHandler&#xff09;&#xff1a;…

TTS | NaturalSpeech语音合成论文详解及项目实现【正在更新中】

----------------------------------&#x1f50a; 语音合成 相关系列直达 &#x1f50a; ------------------------------------- ✨NaturalSpeech&#xff1a;正在更新中~ ✨NaturalSpeech2&#xff1a;TTS | NaturalSpeech2语音合成论文详解及项目实现 本文主要是 讲解了Nat…

DrGraph原理示教 - OpenCV 4 功能 - 二值化

二值化&#xff0c;也就是处理结果为0或1&#xff0c;当然是针对图像的各像素而言的 1或0&#xff0c;对应于有无&#xff0c;也就是留下有用的&#xff0c;删除无用的&#xff0c;有用的部分&#xff0c;就是关心的部分 在图像处理中&#xff0c;也不仅仅只是1或0&#xff0c;…

ES6语法(五)封装模块化公共工具函数、引入npm包 ,并上传到npm中进行下载

1. 模块化 模块化是指将一个大的程序文件&#xff0c;拆分为许多小的文件&#xff08;模块&#xff09;&#xff0c;然后将小的文件组合起来。 1.1. 优点 &#xff08;1&#xff09;防止命名冲突 &#xff08;2&#xff09;代码复用 &#xff08;3&#xff09;高维护性 &…

【快速全面掌握 WAMPServer】06.整明白 PHP

网管小贾 / sysadm.cc 我们今天就要来学习了解一下作为 LAMP 四剑客之一的 PHP 。 PHP 是 Hypertext Preprocessor 即“超文本预处理器”的缩写&#xff0c;是在服务端执行的一种脚本程序语言。 通常它被用于 Web 开发&#xff0c;并可以嵌入 HTML 中&#xff0c;是具有交互功…

yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)

YOLOv5模型介绍 YOLOv5是目前最先进的目标检测算法之一&#xff0c;在多个数据集上取得了优秀的表现。相较于YOLOv4&#xff0c;YOLOv5采用了更深的Backbone网络和更高的分辨率输入图像&#xff0c;以提高检测精度和速度。 1.单目测距实现方法 在目标检测的基础上&#xff…

大模型入门0: 基础知识

transformerscaling law分布式训练 自然语言处理包括几大任务 NLP: 文本分类&#xff0c;词性标注&#xff0c;信息检索NLG&#xff1a;机器翻译&#xff0c;自动摘要&#xff0c;问答QA、对话机器ChatBot下游任务: 词性标注&#xff08;POS&#xff09;&#xff0c;句法分析…