Android开发——菜单(Menu)-——选项菜单(OptionMenu)

2023-11-05

Menu,在Android3.0以前的menu显示,是用户点击手机下方操作按钮的菜单按钮时,会从界面底部向上弹出菜单,菜单内容出现在屏幕底部,可以包含六个及以上的菜单项,超出的部分则以“更多”来显示。

在Android3.0以后的更高版本的系统中,菜单中的项目会出现在操作栏当众,用户通过使用顶部操作栏右侧的图标/提示字,或者按设备的菜单键显示出操作溢出菜单。(3.0以后的菜单栏如下图所示)

Menu分类:选项菜单(OptionMenu)、上下文菜单(ContextMenu)、弹出菜单(PopupMenu)

选项菜单(OptionMenu)

选项菜单是一个应用的主菜单项,用于放置对应用产生全局影响的操作。

1.1新建menu文件夹:res-->New-->Android resource Directory,修改文件夹类型menu

1.2新建menu文件option.xml,menu-->New-->Menu Resource File

 

 1.3 optionn.xml文件代码:

<?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中的属性:showAsAction:always固定在操作栏上直接显示;  -->
<!--  icon可以直接显示指定图标,不显示文本,如果不使用showAsAction="always",则只会显示文本  -->
<!--  在图标文本同时存在的情况下,如果想要又显示文本又显示icon,使用showAsAction="always|withText"  -->
    <item android:title="保存"
        android:id="@+id/save"
        android:icon="@drawable/ic_save"
        app:showAsAction="always"/>
    <item android:title="设置"
        android:id="@+id/setting"/>
    <item android:title="更多操作" >
        <menu >
            <item android:title="退出"
                android:id="@+id/exit"/>
            <item android:title="操作1" />
            <item android:title="操作2" />
        </menu>
    </item>
</menu>

 1.4 创建OptionMenu,实现点击按钮触发事件

package com.example.menuactivity;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //创建OptionMenu
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //通过该方法getMenuInflater(),可以将我们之前设置的option.xml文件设置为我们的菜单文件
        //参数1:传menu资源索引;参数2:我们的菜单对象
        //加载菜单资源
        getMenuInflater().inflate(R.menu.option,menu);
        return true;
    }

    //OptionMenu菜单项选中的触发方法
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        //获取菜单项对应的Id
        switch (item.getItemId()) {
            case R.id.save:
                Toast.makeText(this,"保存",Toast.LENGTH_SHORT).show();
                break;
            case R.id.setting:
                Toast.makeText(this,"设置",Toast.LENGTH_SHORT).show();
                break;
            case R.id.exit:
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android开发——菜单(Menu)-——选项菜单(OptionMenu) 的相关文章

随机推荐

  • Java程序员从阿里面试回来,最后成功拿到阿里offer!

    最近有很多朋友去目前主流的大型互联网公司面试 阿里巴巴 京东 美团 滴滴 面试回来之后会发给我一些面试题 有些朋友轻松过关 拿到offer 但是有一些是来询问我答案的 其实本来真的没打算写这篇文章 主要是自己得记忆力不是很好 不像一些记忆力
  • 百度首页模仿制作(html)详解

    相信大姐学习html这一门语言的第一步一般都是做一个百度首页或者菜鸟教程首页 菜鸟教程首页模仿戳这里 什么的吧 下面就来分享一下我所写的百度首页的模仿过程 1 分析布局 这里我将他的布局分为三大块 上中下各一个div块 2 往div块中添加
  • 【Linux】Ubuntu下C语言访问MySQL数据库入门

    使用的系统是Ubuntu 11 10 数据库是MySQL MySQL数据库环境配置 首先需要安装MySQL客户端和服务器 命令行安装方式为 sudo apt get install mysql server mysql client 然后
  • 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本

    转自 https www diycode cc topics 122 jixiaohua发了一篇一个老鸟也发了一份他给公司内部小伙伴整理的路线图 另一份 Android 开发学习路线图 可惜不是MarkDown格式的 所以jixiaohua
  • html盒子毛玻璃效果,css毛玻璃效果(外加background属性)

    前因 后果 二话不说 上效果 注意 此方法只适合body设置背景图时的模糊 页面布局方面 主要父元素为body 子元素为想要的效果 涉及到的知识点 background filter 定位 伪元素 flex布局 主要为子元素水平居中使用 z
  • idea 快捷键

    注 有些操作的快捷键做了更改 和IntelliJ Idea默认的快捷键不一样 动作 快捷键 说明 Move Caret to Code Block End Ctrl 诸如 围起来的代码块 使用该快捷键可以快速跳转至代码块的结尾处 Move
  • Qt线程与界面

    看了个开源库Stacer 里面使用到了QConcrrent 这个使用很方便 这里简单记录一下总结下Qt的线程创建方法 Qt线程创建方法 QThread继承 QObject moveToThread QConcurrent run Qt中提到
  • pthread_mutex_t

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 互斥锁创建 有两种方法创建互斥锁 静态方式和动态方式 POSIX定义了一个宏PTHREAD MUTEX INITIALIZER来静态初始化互斥锁 方法如下 pthrea
  • Mybatis使用注解方式配置

    目录 1 介绍 2 初始化工程 2 1 导包 2 2 导配置 3 使用注解增删改查 3 1 环境准备 3 1 1 建库建表 3 1 2 创建Student实体类 3 1 3 创建StudentDao接口 3 1 4 配置映射关系 3 2 查
  • Python Matplotlib 实用小技巧!

    转自 网络 今天给大家介绍Matplotlib绘图实用的小技巧 1 添加标题 title matplotlib pyplot 对象中有个 title 可以设置表格的标题 import numpy as np import matplotli
  • django前端模板循环多个list

    这一部分主要涉及到后台View的设计 前端HTML页面的设计 后台设计View from django views generic import View class ForTrView View def get self request
  • PCL 区域生长分割(C++详细过程版)

    区域生长 一 概述 二 代码实现 三 结果展示 1 原始点云 2 聚类结果 四 相关链接 一 概述 区域生长分割是PCL里经典的点云聚类分割算法 具体算法原理和实现代码见 PCL 区域生长分割 为充分了解算法实现的每一个细节和有待改进的地方
  • display:none元素不可见,可通过JS方法把它修改为可见

    页面元素无论用什么xpath都无法定位 by id class name都试过了 可以去页面看看是否这个元素的display是none display none方法是设置元素不可见 所以解决办法就是首先通过JS方法把它修改为可见 js do
  • Kafka 创建 两个topic 一个用于发送信息 一个用于接收Flink处理之后的信息

    Kafka 创建 两个topic 一个用于发送信息 一个用于接收Flink处理之后的信息 Kafka生产者Java代码 package cn oneseek import cn oneseek util JsonData import or
  • 网络工程专业毕设题目选题大全

    文章目录 0 简介 1 如何选题 2 最新网络工程选题 2 1 Java web SSM 系统 2 2 大数据方向 2 3 人工智能方向 2 4 其他方向 4 最后 0 简介 学长搜集分享最新的网络工程专业毕设毕设选题 难度适中 适合作为毕
  • vue入门教程之-属性、事件和双向绑定

    vue入门教程之 属性 事件和双向绑定 欢迎关注博主公众号 java大师 专注于分享Java领域干货文章 关注回复 资源 免费领取全网最热的Java架构师学习PDF 转载请注明出处 https www javaman cn vue vue
  • 【JAVA

    package learn import java awt import javax swing import java awt event public class PinBall private Frame frame new Fram
  • 中国金融牌照全解读

    前言 金融牌照 即金融机构经营许可证 是批准金融机构开展业务的正式文件 目前金融许可证由银监会 证监会和保监会等部门分别颁发 金融监管根据时段划分为事前监管 事中监管 事后监管 市场准入制度是事前监管的核心 金融许可证则是市场准入制度的常态
  • ITERM2 自动登录跳板机脚本(多跳、带动态TOKEN)

    代码如下 设置方式是 iterm2 preference Profiles 新建一个profile 并设置Name为a Command为 Users XXX Desktop a sh 在sen text as start内传入4个参数 US
  • Android开发——菜单(Menu)-——选项菜单(OptionMenu)

    Menu 在Android3 0以前的menu显示 是用户点击手机下方操作按钮的菜单按钮时 会从界面底部向上弹出菜单 菜单内容出现在屏幕底部 可以包含六个及以上的菜单项 超出的部分则以 更多 来显示 在Android3 0以后的更高版本的系