【android开发-02】android中OptionMenu用法介绍

Option Menu 是 Android 中一种常用的菜单方式,它通常用于在屏幕的顶部显示一个下拉菜单,提供一些常用的功能或操作选项。菜单里的菜单项默认不会显示出来,需要点击右上角三个点的菜单按钮。以下是一些使用 Option Menu 的基本步骤:

1,在你的 Activity 中,重写 onCreateOptionsMenu(Menu menu) 方法。在这个方法中,你可以创建和配置你的 Option Menu。

@Override  
public boolean onCreateOptionsMenu(Menu menu) {  // 创建一个 Option Menu  MenuInflater inflater = getMenuInflater();  inflater.inflate(R.menu.option_menu, menu);  return true;  
}

通过getMenuInflater方法能够得到MenuInflater 对象,再调用inflate方法就可以给当前activity创建菜单。inflate方法接收2个参数,第一个参数用于指定通过那个一个资源文件来创建菜单,第二个参数用于指定我们的菜单项将添加到哪一个Menu对象中,这里直接使用onCreateOptionsMenu方法中传入的menu参数。然后这个方法返回true,表示允许菜单显示出来,返回false,创建的菜单将无法显示。

2,在你的 Activity 中,重写 onOptionsItemSelected(MenuItem item) 方法。在这个方法中,你可以处理用户点击 Option Menu 中的菜单项的事件。

@Override  
public boolean onOptionsItemSelected(MenuItem item) {  switch (item.getItemId()) {  case R.id.menu_item_1:  // 处理菜单项 1 的点击事件  Toast.makeText(MainActivity.this, "处理菜单项 1 的点击事件", Toast.LENGTH_SHORT).show();break;  case R.id.menu_item_2:  // 处理菜单项 2 的点击事件  Toast.makeText(MainActivity.this, "处理菜单项 2 的点击事件", Toast.LENGTH_SHORT).show();break;  // ... 其他菜单项的处理  }  return true;  
}

通过调用item.getItemId()来判断我们点击的是哪一个菜单项,然后给每一个菜单项加入自己的处理逻辑。

这里我们活学活用,弹出我们前面学的Toast

3,在你的资源文件(res/menu)中,创建一个名为 option_menu.xml 的菜单布局文件。在这个文件中,你可以定义你的 Option Menu 中各个菜单项的显示文本、图标等属性。例如:

<menu xmlns:android="http://schemas.android.com/apk/res/android">  <item android:id="@+id/menu_item_1" android:title="菜单项 1" />  <item android:id="@+id/menu_item_2" android:title="菜单项 2" />  <!-- ... 其他菜单项 -->  
</menu>

这里创建了2个菜单项,其中item 标签就是用来创建具体的某一个菜单项,然后通过android:id给菜单项指定一个唯一标识符,android:title给菜单项指定一个名称。

4,在你的 Activity 中,使用 setMenuVisibility(true) 方法来显示 Option Menu。例如:

@Override  
protected void onResume() {  super.onResume();  // 设置 Option Menu 的可见性为 true,使其在屏幕上显示出来  invalidateOptionsMenu();  
}

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

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

相关文章

树莓派,linux换清华源

清华源网址 https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/ 更换软件源 鉴于国内网络环境下载各大镜像&#xff0c;软件包速度慢的问题&#xff0c;需要更换软件源&#xff0c;以防下载慢&#xff0c;且在本教程中&#xff0c;统一更换为清华源。 2.3.1 更换树莓派软…

工程师每日刷题 -4

文章目录 1、深度学习2、算法与数据结构2.1、暴力解法2.2、滑动窗口法 3、编程基础 1、深度学习 问题&#xff1a;CNN的本质和优势&#xff1f; CNN 本质上是一个多层感知机 (MLP)&#xff0c;其成功的原因关键在于它所采用的【稀疏连接】&#xff08;局部感受&#xff09;和…

【带头学C++】----- 九、类和对象 ---- 9.3 析构函数

9.3 析构函数 9.3.1 如何定义析构函数 函数名和类名称相同&#xff0c;在函数名前加 ~ &#xff0c;没有返回值类型&#xff0c;没有函数形参。 (不能被重载) 当对象生命周期结束的时候&#xff0c;系统自动调用析构函数&#xff08;析构函数会先清理对象占用内存空间存放的…

【openssl】Window系统如何编译openssl

本文主要记录如何编译出windows版本的openss的lib库 1.下载openssl&#xff0c;获得openssl-master.zip。 a.可以通过github&#xff08;网址在下方&#xff09;上下载最新的代码、今天是2023.12.1我用的master版本&#xff0c;下载之后恭喜大侠获得《openssl-master.zip》 …

测试-感受生产者消费者模型-阻塞队列

Testpublic void test() throws InterruptedException {// 创建一个阻塞队列// 编写1个生产者-3个消费者的模型BlockingQueue<String> queue new ArrayBlockingQueue<>(3);// 1个生产者new Thread(() -> {// 生产20个元素for (int i 0; i < 20; i) {try {/…

高效学习 React 框架AntDesign Pro

高效学习 用框架做项目。 第一步命令行运行下列命令&#xff0c;快速启动开发服务 $ npm i ant-design/pro-cli -g $ pro create my-app$ cd my-app $ npm i $ npm run start # 打开浏览器访问 http://localhost:8000 # 如果安装过程中出现报错&#xff0c;请更新包$ npm upd…

快递物流模拟系统

快递物流模拟系统 文章目录 快递物流模拟系统一、目的二、技术实现&#xff1a;三、网页功能具体介绍 一、目的 调用百度地图 JavaScript API 创建的简单的基站物流GPS定位与监控系统的示例网页 二、技术实现&#xff1a; 使用百度地图 JavaScript API 版本 2.0。利用 BMap …

Webpack——Webpack简介

1、什么是Webpack&#xff1f; Webpack是一个开源的JavaScript模块打包工具&#xff0c;其最核心的功能是解决模块之间的依赖&#xff0c;把各个模块按照特定的规则和顺序组织在一起&#xff0c;最终合并为一个JS文件&#xff08;有时会有多个&#xff0c;这里讨论的只是最基本…

SQL Sever 基础知识 - 数据排序

SQL Sever 基础知识 - 二 、数据排序 二 、对数据进行排序第1节 ORDER BY 子句简介第2节 ORDER BY 子句示例2.1 按一列升序对结果集进行排序2.2 按一列降序对结果集进行排序2.3 按多列对结果集排序2.4 按多列对结果集不同排序2.5 按不在选择列表中的列对结果集进行排序2.6 按表…

人才缺口达150万!云计算凭什么这么火?

《中国互联网发展报告2022》指出&#xff0c;2021年&#xff0c;我国云计算市场规模达到3229亿元&#xff0c;增速为54.4%。未来5年内&#xff0c;我国云计算产业将面临高达近150万的人才缺口&#xff0c;预计未来市场仍将保持30%的增速。与此同时&#xff0c;随着大数据、人工…

【每日OJ —— KY11 二叉树遍历】

每日OJ —— KY11 二叉树遍历 1.题目&#xff1a;KY11 二叉树遍历2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目&#xff1a;KY11 二叉树遍历 2.解法 2.1.算法讲解 1.首先需要创建二叉树结构。 2.其次&#xff0c;根据题目根据题目遍历的顺序要求来实现构建二叉树的…

代码demo-内部订单批量投料

为了简化用户操作&#xff0c;开发内部订单批量投料功能 用户可以批量上传&#xff0c;或者选择对应的物料&#xff0c;输入库位和内部订单号后进行过账操作 对用户选择的内部订单做校验&#xff0c;内部订单是否正确 内部订单的公司是否和工厂对应的公司一致等等 下面展示…

Sui与阿联酋科技孵化器Hub71合作支持生态项目建设,扩大全球影响力

近日&#xff0c;总部位于阿联酋&#xff08; United Arab Emirates &#xff0c;UAE&#xff09;的科技孵化器Hub71宣布与Mysten Labs合作&#xff0c;将支持Sui上的新项目。通过本次合作&#xff0c;孵化项目的开发者们不仅可以获得Mysten Labs的技术专业知识和支持&#xff…

mysql多版本并发控制mvcc

MySQL 使用了多版本并发控制&#xff08;MVCC&#xff0c;Multi-Version Concurrency Control&#xff09;机制来处理并发修改。MVCC 提供了一种并发控制方式&#xff0c;允许多个事务同时读取和修改数据库&#xff0c;同时保持数据的一致性和隔离性。下面是 MySQL 中 MVCC 的一…

谷歌开发者账号防关联所用的VPS,哪个性价比最高?阿里云、腾讯云、亚马逊云、酷鸟云……

对于通过马甲包或矩阵方式在Google play应用商店发布应用的开发者而言&#xff0c;需要多个开发者账号来上架发布应用&#xff0c;但根据谷歌相关政策&#xff0c;不允许一个用户拥有或操弄多个账号&#xff0c;因此需要从各方面做好多账号的防关联工作&#xff0c;避免被谷歌系…

Flutter基础开发

参考:http://bbs.itying.com/topic/5cdb83b7fac8b00944a7a0c3 参考:https://www.bilibili.com/video/BV1S4411E7LY?p34&spm_id_frompageDriver 1.使用镜像 由于在国内访问Flutter有时可能会受到限制&#xff0c;Flutter官方为中国开发者搭建了临时镜像&#xff0c;大家可以…

SpringBoot整合MyBatis-Plus

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

【HTTP协议】简述HTTP协议的概念和特点

&#x1f38a;专栏【网络编程】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f970;欢迎并且感谢大家指出小吉的问题 文章目录 &#x1f33a;概念&#x1f33a;特点&#x1f384;请求协议&#x1f384;响应协议…

java第二十六课

数据库多表 多表做到每个表的字段名称不一样 Mysql 关系数据库 结合到商城&#xff1a;用户表 订单表 商品表 商品详情表 用户表:字段&#xff1a; 用户 id:唯一标志用户 用户名称&#xff1a;name 用户性别&#xff1a;sex 用户年龄:age 用户地址&#xff1a;position 用户密码…

C++相关闲碎记录(2)

1、误用shared_ptr int* p new int; shared_ptr<int> sp1(p); shared_ptr<int> sp2(p); //error // 通过原始指针两次创建shared_ptr是错误的shared_ptr<int> sp1(new int); shared_ptr<int> sp2(sp1); //ok 如果对C相关闲碎记录(1)中记录的shar…