Android应用资源-菜单

前言

最近一直在学习Flutter相关的知识 ,好久没有看Android的东西了 ,今天有空继续来看Android官网的知识,

菜单资源

菜单资源定义可通过 MenuInflater 进行扩充的应用菜单,包括选项菜单、上下文菜单和子菜单。
https://developer.android.com/guide/topics/resources/menu-resource

此处是引用了Android一句对菜单资源是啥东西的一个解释

  • 文件位置
    菜单资源文件的位置是在res文件夹下的menu文件夹内部 ,使用者可以定义任意多个菜单文件

  • 编译后的资源类型
    菜单文件编译后回成为Menu或者是他的子类

  • 资源引用
    在xml文件中通过 @[packagename]menu.filename来引用
    在代码中通过 R.menu.filename来引用

  • 语法

    <?xml version="1.0" encoding="utf-8"?>
    //menu节点必须是根节点 包含item或者是grounp元素
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    // 菜单项 可能包含item(子菜单) 必须是menu 或者是group的子元素
        <item 
             //
              android:id="@[+][package:]id/resource_name"
              //菜单的标题
              android:title="string"
              //压缩标题 是在正常标题过长的时候使用的
              android:titleCondensed="string"
              //用作菜单项图标的图片
              android:icon="@[package:]drawable/drawable_resource_name"
              //点击菜单项的时候调用的方法
              android:onClick="method name"
              /***
               * ifroom :只有应用栏中有空间的情况下才将其放置其中
               * never:不将此项放入到标题栏中  而是放入到溢出菜单中
               * always:始终将此项放在应用栏中。
               ***/
              android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
              //用作操作视图的布局
              android:actionLayout="@[package:]layout/layout_resource_name"
              //要用作操作视图的View的完全限定名
              android:actionViewClass="class name"
              android:actionProviderClass="class name"
              //字母快捷键
              android:alphabeticShortcut="string"
              android:alphabeticModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
              //数字快捷键
              android:numericShortcut="string"
              android:numericModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
              android:checkable=["true" | "false"]
              android:visible=["true" | "false"]
              android:enabled=["true" | "false"]
              android:menuCategory=["container" | "system" | "secondary" | "alternative"]
              android:orderInCategory="integer" />
        <group android:id="@[+][package:]id/resource name"
               android:checkableBehavior=["none" | "all" | "single"]
               android:visible=["true" | "false"]
               android:enabled=["true" | "false"]
               android:menuCategory=["container" | "system" | "secondary" | "alternative"]
               android:orderInCategory="integer" >
            <item />
        </group>
        <item >
            <menu>
              <item />
            </menu>
        </item>
    </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/item_search"
        android:icon="@drawable/ic_search"
        android:title="搜索"
        app:showAsAction="ifRoom" />
    <group android:id="@+id/menu_group">
        <item
            android:id="@+id/group_item_one"
            android:title="group_item_one"
            app:showAsAction="ifRoom"/>
        <item
            android:id="@+id/group_item_two"
            android:title="group_item_two"
            app:showAsAction="ifRoom"/>
    </group>
</menu>
  • 代码中加载菜单
/***
     * 返回true将显示菜单  返回false将不会显示菜单
     */
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {

        //将菜单资源文件加载成一个menu对象
        menuInflater.inflate(R.menu.example_menu, menu)
        return true
    }

    /***
     * 返回false 正常使用 返回  true消费掉
     */
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.item_search -> {
                ToastUtil.toastTextView(value = "搜索")
            }
        }
        return false
    }

到这里菜单资源的简单使用就结束了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值