NoActionBar主题下如何添加OptionsMenu
2024-09-07 21:59:22
菜单无法显示
为了不显示标题栏,所以主题使用了 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)
}
最新文章
- 4 Best Time to Buy and Sell Stock III_Leetcode
- iOS--二维码
- jQ1.5源码注释以及解读RE
- Server.MapPath查询路径那几件事
- jQuery select操作控制方法小结
- MySQL 5.5: InnoDB Change Buffering
- max subquence sum(n^2)
- POJ 1173 Find them, Catch them
- DTCMS自定义标签:面包屑导航,栏目中通过栏目调用名称获得栏目名称
- Error 56: The Cisco Systems, Inc. VPN Service has not been started(Cisco VPN在Vista下出现Error 56的解决办法)
- Flip Game poj 1753
- I/O控制的主要功能
- FreeRTOS 启动进程调度后,程序卡死的部分原因分析。
- excel追加数据
- Beautiful Paintings CodeForces - 651B (贪心)
- TOJ4127: Root of String
- github上创建ssh连接多个账户
- springboot之mybatis别名的设置
- aop动态代理 事务 threadlocal
- 在GitHub,他们是怎么玩的? (转)