• NoActionBar主题下如何添加OptionsMenu


    菜单无法显示

    为了不显示标题栏,所以主题使用了 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)
    }
    
  • 相关阅读:
    Java 插入排序
    Java 浮点型与双精度数值比较
    Java 包装类Integer的值比较
    ORA-00942 table or view does not exist
    logging模块
    面向对象
    模块和包
    异常处理
    序列化模块
    css3选择器
  • 原文地址:https://www.cnblogs.com/ymtianyu/p/13213605.html
Copyright © 2020-2023  润新知