Android studio 之 Menu(菜单)

一、菜单资源及选项菜单

首先,新建好项目后,删除layout文件夹及java的com.example.menutouch文件夹下所有文件



在layout文件夹下新建xml文件menu_layout.xml,使用线性布局LinearLayout,在线性布局里添加文本TextView和图片ImageView控件。

<?xml version="1.0" encoding="utf-8"?>
//第一行代码为固定代码,不可改变
<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"xmlns:android="http://schemas.android.com/apk/res/android" ><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:textSize="30dp"android:text="选项菜单测试" /><ImageViewandroid:id="@+id/imageView"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="15dp"android:background="@drawable/ic_launcher_background" />
</LinearLayout>

在AndroidManifest.xml文件中,需要手动添加一个最低和目标SDK版本为19。

   <uses-sdkandroid:minSdkVersion="19"android:targetSdkVersion="19"></uses-sdk>

删除如下圈出的一行文字,这行文字是文件新建是自带的,表示不带的动作条。

利用菜单资源添加菜单


在java文件夹下新建一个Java类文件MenuTeachActivity.java。

package com.example.menutouch;import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;/*
* 要继承AppCompatActivity,通过该方式使得我们的界面具备动作
* */
public class MenuTeachActivity extends AppCompatActivity {private ImageView imageView =null;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.menu_layout);//与menu_layout.xml文件相连接}/*
* @param menu 当前界面对应的菜单对象
* @return
* */@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//使用菜单构造器,通过菜单资源文件创建菜单项MenuInflater mi =getMenuInflater();mi.inflate(R.menu.menu_main,menu);//使用菜单构造器,利用菜单资源往菜单对象上添加菜单项return true;}@Overridepublic boolean onOptionsItemSelected(@NonNull MenuItem item) {int itemId = item.getItemId();switch (itemId){case R.id.print:Toast.makeText(this,"你点击了打印菜单项",Toast.LENGTH_LONG).show();return true;case R.id.email:Toast.makeText(this,"你点击了邮件菜单项",Toast.LENGTH_LONG).show();return true;case R.id.setting:Toast.makeText(this,"你点击了设置菜单项",Toast.LENGTH_LONG).show();return true;default:return false;}}

点击运行即可

二、子菜单

在menu_layout.xml文件的一级菜单项item下再添加一个menu,添加二级菜单项。

<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"tools:context="com.example.menutouch.MainActivity"><itemandroid:id="@+id/print"android:orderInCategory="100"android:title="@string/action_print"app:showAsAction="never" /><itemandroid:id="@+id/email"android:orderInCategory="100"android:title="@string/action_email"app:showAsAction="never" /><itemandroid:id="@+id/setting"android:orderInCategory="100"android:title="@string/action_setting"app:showAsAction="never" ><menu><itemandroid:id="@+id/color"android:orderInCategory="100"android:title="@string/action_color"app:showAsAction="never" /><itemandroid:id="@+id/user"android:orderInCategory="100"android:title="@string/action_user"app:showAsAction="never" /><itemandroid:id="@+id/music"android:orderInCategory="100"android:title="@string/action_music"app:showAsAction="never" /></menu></item>
</menu>

其中,自定义的字符需要在字符资源文件里面添加和更改

在上述MenuTeachActivity.java编写文件里添加二级菜单触发事件

@Overridepublic boolean onOptionsItemSelected(@NonNull MenuItem item) {int itemId = item.getItemId();switch (itemId){case R.id.print:Toast.makeText(this,"你点击了打印菜单项",Toast.LENGTH_LONG).show();return true;case R.id.email:Toast.makeText(this,"你点击了邮件菜单项",Toast.LENGTH_LONG).show();return true;case R.id.setting:Toast.makeText(this,"你点击了设置菜单项",Toast.LENGTH_LONG).show();return true;case R.id.color:Toast.makeText(this,"你点击了背景色二级菜单项",Toast.LENGTH_LONG).show();return true;case R.id.user:Toast.makeText(this,"你点击了用户信息二级菜单项",Toast.LENGTH_LONG).show();return true;case R.id.music:Toast.makeText(this,"你点击了背景音乐二级菜单项",Toast.LENGTH_LONG).show();return true;default:return false;}}

点击运行即可

三、快捷菜单

在上述MenuTeachActivity.java编写文件里添加快捷菜单触发事件

package com.example.menutouch;import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
/*
* 要继承AppCompatActivity,通过该方式使得我们的界面具备动作
* */
public class MenuTeachActivity extends AppCompatActivity {private ImageView imageView =null;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.menu_layout);init();}private void init(){imageView =findViewById(R.id.imageView);registerForContextMenu(imageView);//为imageview注册快捷菜单}
/*
* @param menu 当前界面对应的菜单对象
* @return
* */@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//使用菜单构造器,通过菜单资源文件创建菜单项MenuInflater mi =getMenuInflater();mi.inflate(R.menu.menu_main,menu);//使用菜单构造器,利用菜单资源往菜单对象上添加菜单项return true;}@Overridepublic boolean onOptionsItemSelected(@NonNull MenuItem item) {int itemId = item.getItemId();switch (itemId){case R.id.print:Toast.makeText(this,"你点击了打印菜单项",Toast.LENGTH_LONG).show();return true;case R.id.email:Toast.makeText(this,"你点击了邮件菜单项",Toast.LENGTH_LONG).show();return true;case R.id.setting:Toast.makeText(this,"你点击了设置菜单项",Toast.LENGTH_LONG).show();return true;case R.id.color:Toast.makeText(this,"你点击了背景色二级菜单项",Toast.LENGTH_LONG).show();return true;case R.id.user:Toast.makeText(this,"你点击了用户信息二级菜单项",Toast.LENGTH_LONG).show();return true;case R.id.music:Toast.makeText(this,"你点击了背景音乐二级菜单项",Toast.LENGTH_LONG).show();return true;default:return false;}}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {menu.setHeaderTitle("我的快捷菜单标题");menu.add(0,1,1,"快捷菜单子项1");menu.add(0,2,2,"快捷菜单子项2");menu.add(0,3,3,"快捷菜单子项3");}@Overridepublic boolean onContextItemSelected(@NonNull MenuItem item) {switch (item.getItemId()){case 1:Toast.makeText(this,"你点击了快捷菜单项1",Toast.LENGTH_LONG).show();return true;case 2:Toast.makeText(this,"你点击了快捷菜单项2",Toast.LENGTH_LONG).show();return true;case 3:Toast.makeText(this,"你点击了快捷菜单项3",Toast.LENGTH_LONG).show();return true;default:return false;}}
}

点击运行即可

Android studio 之 Menu(菜单)相关推荐

  1. android菜单动画,利用 android studio 制作一个菜单动画

    目的:利用Android studio 编一个菜单动画,以便初步了解Android studio的基本操作,初步了解Android开发的思考方法. 技术: 1.RelativeLayout. 2.sr ...

  2. Android 动态更新Menu菜单

    1. 需求描述 Android Menu菜单是比较常见的功能,在ActionBar  or ToolBar上显示,点击更多(3个点),会有下拉列表菜单展示,  在工作项目中有个小需求改动: 在 Too ...

  3. android 自定义menu 背景颜色,Android中设置Menu菜单的文字颜色为白色

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 开发者交流裙: 188168040 Android中设置Menu菜单的文字颜色为白色,一般情况下,Android中Menu菜单的title文字颜色为黑色, ...

  4. android studio 下拉菜单,怎么在android studio中使用Spinner实现一个下拉菜单

    怎么在android studio中使用Spinner实现一个下拉菜单 发布时间:2021-03-23 14:56:15 来源:亿速云 阅读:92 作者:Leah 这期内容当中小编将会给大家带来有关怎 ...

  5. Android学习笔记--Menu菜单的使用

    实现选项菜单.上下文菜单,以及菜单内部的子菜单. 视图效果: MainActivity 选项菜单 选项菜单的子菜单 上下文菜单(按住按钮或者EditText弹出) 注意:上下文菜单如何弹出?在注册该菜 ...

  6. Android Studio下拉菜单

    一.菜单概述 本次课我们准备讲解菜单,菜单在安卓应用程序中占有比较重要的位置.原生安卓提供了三种类型的菜单:选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMe ...

  7. android菜单的类型有几种,Android中的Menu(菜单)的三种类型菜单的学习

    今天学习一下菜单组件,在Android中的菜单中有三种①:OptionMenu(选项菜单)②:ContextMenu(上下文菜单) ③:SubMenu(子菜单) 下面分别来学一下 一:OptionMe ...

  8. android studio上下滚动菜单,Android模仿美团顶部的滑动菜单实例代码

    前言 本文主要给大家介绍了关于Android模仿美团顶部滑动菜单的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 先来看下效果图: 实现方法 这是通过 ViewPager ...

  9. android studio 下拉菜单,android studio 的下拉菜单Spinner使用详解

    一.认识Spinner Spinner其实就是一个列表选择框.不过Android的列表选择框并不需要显示下拉列表,而是相当于弹出一个菜单供用户选择. Spinner 与 Gallery 都继承了Abs ...

  10. Android 应用开发(第2章)---如何增加menu菜单

    1.Android studio 增加menu 菜单 新建MenuTest  project文件 1).在res上面右键->New->Android resource directory ...

最新文章

  1. 删除windows上的oracle产品
  2. Android之横向滑动的广告(网格控件)
  3. Linux 系统 vsftpd时区问题的解决
  4. Vue+Openlayer使用Draw实现交互式绘制线段
  5. Java 线程同步总结
  6. C++(STL):28 ---关联式容器map用法
  7. 有用的收藏!javascript/c#/asp.net
  8. 【BZOJ1901】Zju2112 Dynamic Rankings
  9. java如何解析word大纲_Java POI 解析word文档
  10. 电脑问题勘查 —— BIOS
  11. 积分简明笔记-第一类曲线积分的类型
  12. [代码整洁之道].(美)马丁.扫描版pdf
  13. 【c4d学习笔记】OC渲染器安装问题
  14. JRebel激活教程
  15. 面试丨求职时这样回答问题你就输了!来自IT面试官视角的深度解读
  16. UnityShader学习教程之<StandardShader>
  17. 开发,要谋定而后动。
  18. steam无法连接至计算机,无法连接至steam网络怎么办 无法连接至steam网络解决方法【图文】...
  19. React Native 中使用图标
  20. IP (网络之间互连的协议)

热门文章

  1. 超过2t硬盘分区_大于2T的硬盘怎么分区
  2. 新浪vip邮箱 服务器,新浪手机邮箱
  3. 【过关斩将】小伙子,请做一下自我介绍?
  4. 中企海外周报 | 传祺GM6将亮相北美车展,锦江都城发力布局全球
  5. python操作 e'xcel表格
  6. web入门【Response ServletContext】
  7. Codeforces Round #572(div2)部分题解(A~C,E)
  8. 完爆面试官!2021Java高频精选面试题讲解
  9. 从四面体数据中提取表面
  10. 使用 Fail2ban 防止 ssh 暴力破解攻击