菜单无法显示

为了不显示标题栏,所以主题使用了 NoActionBar,这也直接导致选项菜单无处显示

解决方案

添加一个ToolBar,自定义标题栏

<androidx.appcompat.widget.Toolbar
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/main_menu_ebook"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>

以下为kotlin语法,如果你用的是java语法,结构有差,但核心代码是一样的 setSupportActionBar(mBinding.mainMenuEbook)

这里我使用了 ViewBinding,如果你没有开启,那就把 mBinding.mainMenuEbook 替换成 R.id.你的toolbar控件来使用

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setSupportActionBar(mBinding.mainMenuEbook)
}

res/menu

添加menu资源文件夹

res > 右键添加资源文件夹 > 类型 menu

添加menu文件

res > menu > 右键添加menu资源文件

<?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">
<item
android:id="@+id/menu_main_add"
android:title="添加"
android:icon="@android:drawable/ic_menu_add"
app:showAsAction="never"/>
<item android:id="@+id/menu_main_close"
android:title="关闭"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
app:showAsAction="never"/>
</menu>

Activity

onCreateOptionsMenu

在activity创建的时候创建menu,还有一个是onPrepareOptionsMenu每次点击菜单键就创建菜单, 主要用于菜单会更新的情况

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_main, menu)
return super.onCreateOptionsMenu(menu)
}

菜单项点击事件

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when(item?.itemId){
R.id.menu_main_add ->
showSnackBar(mBinding.bookContent, "menu add")
R.id.menu_main_close -> finish()
}
return super.onOptionsItemSelected(item)
}

NoActionBar主题下如何添加OptionsMenu的更多相关文章

  1. Hexo快速构建个人小站-Fulid主题下添加Valine评论系统(三)

    Hexo目录: Hexo快速构建个人小站-Hexo初始化和将项目托管在Github(一) Hexo快速构建个人小站-自定义域名和自定义主题(二) 背景交代: 前面两章完成了Hexo的初始化和部分自定义 ...

  2. Pacman主题下给Hexo增加简历类型

    原文 http://blog.zanlabs.com/2015/01/02/add-resume-type-to-hexo-under-pacman-theme/ 背景 虽然暂时不找工作,但是想着简历 ...

  3. (原)Mac下Apache添加限制IP线程模块:mod_limitipconn.so

    1.下载:http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 解压到一个目录:我的是~/Download/mod_limitipcon ...

  4. Windows系统下MySQL添加到系统服务方法(mysql解压版)

    MySQL软件版本:64位 5.7.12 1.首先配置MySQL的环境变量,在系统环境变量Path的开头添加MySQL的bin目录的路径,以“;”结束,我的路径配置如下: 2.修改MySQL根目录下的 ...

  5. Java: 在不同windows主题下,JFrame窗口设置最佳高度的解决方案

    //设置窗口的大小,无论使用怎样的windows主题,都能灵活的应对,显示合适的窗口大小,一定要在JFrame.setVisible(true)之前调用, //替代传统的frame.setSize(w ...

  6. ie6、7下button添加背景和边框,内边距会出现1px的边框

    ie6.7下button添加背景和边框,内边距会出现1px的空白边框 解决办法:在input外面加上一个标签,把背景和边框都写在标签的样式上面,input的 background和border都non ...

  7. linux下永久添加静态路由

    在linux下永久添加静态路由有两种方法: 添加路由的命令: 1,route add route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0 ...

  8. 问题:window7任务计划时;结果:Win7 下如何添加任务计划呢

    Win7 下如何添加任务计划呢 1.点击“开始”--->“所有程序”--->"附件"--->"系统工具"2.选择“任务计划程序” 如下图所示: ...

  9. C#中怎样在ToolStripMenuItem下再添加子级菜单

    场景 在右键菜单ContextMenuStrip下添加子菜单选项可以通过 ContextMenuStrip menuStrip ToolStripMenuItem mnuChartOption = n ...

随机推荐

  1. day37:MySQL基本操作

    目录 part1:登录mysql的完整语法 part2:查询用户/设置密码/去除密码 part3:给ip/网段/所有ip设置账号密码 part4:查看权限 part5:添加权限/删除权限/删除用户 p ...

  2. 创建VUE+Element-UI项目

    创建项目步骤 安装node.js后,使用管理员角色在cmd中依次运行下列步骤 vue init webpack hello-vue 创建项目文件 cd hello-vue 进入项目 npm insta ...

  3. C语言中存储多个字符串的两种方式

    C语言中存储多个字符串的两种方式 方式一    二维字符串数组 声明: char name[][] = { "Justinian", "Momo", " ...

  4. label 的autosize属性

    label 的autosize属性,显示不全的问题.

  5. iOS NSNotification通知

    通知中心(NSNotificationCenter) 通知(NSNotification) 一个完整的通知一般包含3个属性:(注意顺序) - (NSString *)name;  通知的名称 - (i ...

  6. CVPR2020 面向密集多角度物体检测的动态修正网络(DRN)

    论文链接:https://arxiv.org/pdf/2005.09973.pdf code:https://github.com/Anymake/DRN_CVPR2020 文章概要: 本文是中科院自 ...

  7. Nginx之rewrite使用

    rewrite regex replacement [flag];  flag=[break/last/redirect/permanent] ² regex 是正则表达式 ² replacement ...

  8. wfuzz 安装

    wfuzz 安装 win10 下的wfuzz安装 fuzz下载 https://github.com/xmendez/wfuzz 安装遇到的问题 0x1报错 解决方法: 更新pip python -m ...

  9. 怎么把后台传过来的Json拼成table 用Jquery ajax()

    页面上的表格定义:<table id="tableId"></table> js中的代码:var $parent0 = $('#tableId);//获取页 ...

  10. 一文说清 InnoDB 的事务机制

    我们从一个转账的故事开始. 隔壁小王从美团上找到了一家水饺店,准备中午吃水饺.下单成功,支付20元. 商家这里响了一下:叮叮,您有美团外卖新订单啦,请及时处理.水饺一份,好嘞,下锅. 很快小王吃到外卖 ...