菜单无法显示

为了不显示标题栏,所以主题使用了 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)
}

最新文章

  1. 4 Best Time to Buy and Sell Stock III_Leetcode
  2. iOS--二维码
  3. jQ1.5源码注释以及解读RE
  4. Server.MapPath查询路径那几件事
  5. jQuery select操作控制方法小结
  6. MySQL 5.5: InnoDB Change Buffering
  7. max subquence sum(n^2)
  8. POJ 1173 Find them, Catch them
  9. DTCMS自定义标签:面包屑导航,栏目中通过栏目调用名称获得栏目名称
  10. Error 56: The Cisco Systems, Inc. VPN Service has not been started(Cisco VPN在Vista下出现Error 56的解决办法)
  11. Flip Game poj 1753
  12. I/O控制的主要功能
  13. FreeRTOS 启动进程调度后,程序卡死的部分原因分析。
  14. excel追加数据
  15. Beautiful Paintings CodeForces - 651B (贪心)
  16. TOJ4127: Root of String
  17. github上创建ssh连接多个账户
  18. springboot之mybatis别名的设置
  19. aop动态代理 事务 threadlocal
  20. 在GitHub,他们是怎么玩的? (转)

热门文章

  1. HTTP系列1番外之头部字段大全
  2. Java面试题(容器篇)
  3. 一文教你读懂JVM类加载机制
  4. Fitness - 07.07
  5. Vulkan相关资源
  6. P1090 合并果子(哈弗曼树)
  7. Linux服务器关联Git,通过执行更新脚本实现代码同步
  8. Mybatis-日志
  9. TP6.0 一对多模型关联 hasMany
  10. 单应用模式 - Layuiadmin单页版放入TP6.0的部署方案