菜单无法显示

为了不显示标题栏,所以主题使用了 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. js byte字节流和数字,字符串之间的转换,包含无符和有符之间的转换

    var NumberUtil={ //byte数组转换为int整数 bytesToInt2:function(bytes, off) { var b3 = bytes[off] & 0xFF; ...

  2. 2020,最新APP重构:网络请求框架

    在现在的app,网络请求是一个很重要的部分,app中很多部分都有或多或少的网络请求,所以在一个项目重构时,我会选择网络请求框架作为我重构的起点.在这篇文章中我所提出的架构,并不是所谓的 最好 的网络请 ...

  3. Kafka Broker源码:网络层设计

    一.整体架构 1.1 核心逻辑 1个Acceptor线程+N个Processor线程(network.threads)+M个Request Handle线程(io threads) 多线程多React ...

  4. java生成四位随机数,包含数字和字母 区分大小写,特别适合做验证码,android开发

    private String generateWord() { String[] beforeShuffle = new String[] { "2", "3" ...

  5. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

  6. 使用Javax.mail 发送邮件

    使用Javax.mail 发送邮件 详细说明都在代码中: 引入依赖  <!--sun定义的一套接收.发送电子邮件的API-->    <dependency>      < ...

  7. Spring security OAuth2.0认证授权学习第四天(SpringBoot集成)

    基础的授权其实只有两行代码就不单独写一个篇章了; 这两行就是上一章demo的权限判断; 集成SpringBoot SpringBoot介绍 这个篇章主要是讲SpringSecurity的,Spring ...

  8. EasyPoi导出Excel

    这几天一直在忙工作中的事情,在工作中有一个问题,可能是因为刚开始接触这个EasyPoi,对其也没有太多的理解,在项目中就使用了,有一个需求,是要导出项目中所有的表格,今天就对这个需求进行分析和实现吧; ...

  9. IOException的子类

    ChangedCharSetException, CharacterCodingException, CharConversionException, ClosedChannelException, ...

  10. ZT:15 个你非了解不可的 Linux 特殊字符

    https://os.51cto.com/art/202003/611595.htm 不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有 ...