zoukankan      html  css  js  c++  java
  • 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)
    }
    
  • 相关阅读:
    Windows系统架构
    UVa10006-Carmichael Numbers
    Android打开系统设置
    C语言与汇编“硬在哪里”——什么是面向硬件?
    javaSocket与C通信
    小智慧25
    sqlplus中显示sql执行计划和统计信息
    记一次修复被篡改的IE首页
    UIView的生命周期
    [置顶] 关于UBUNTU 12.04, 在THINKPAD E430C上WIFI连接不上的问题
  • 原文地址:https://www.cnblogs.com/ymtianyu/p/13213605.html
Copyright © 2011-2022 走看看