Android studio 之 Menu(菜单)
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(菜单)相关推荐
- android菜单动画,利用 android studio 制作一个菜单动画
目的:利用Android studio 编一个菜单动画,以便初步了解Android studio的基本操作,初步了解Android开发的思考方法. 技术: 1.RelativeLayout. 2.sr ...
- Android 动态更新Menu菜单
1. 需求描述 Android Menu菜单是比较常见的功能,在ActionBar or ToolBar上显示,点击更多(3个点),会有下拉列表菜单展示, 在工作项目中有个小需求改动: 在 Too ...
- android 自定义menu 背景颜色,Android中设置Menu菜单的文字颜色为白色
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 开发者交流裙: 188168040 Android中设置Menu菜单的文字颜色为白色,一般情况下,Android中Menu菜单的title文字颜色为黑色, ...
- android studio 下拉菜单,怎么在android studio中使用Spinner实现一个下拉菜单
怎么在android studio中使用Spinner实现一个下拉菜单 发布时间:2021-03-23 14:56:15 来源:亿速云 阅读:92 作者:Leah 这期内容当中小编将会给大家带来有关怎 ...
- Android学习笔记--Menu菜单的使用
实现选项菜单.上下文菜单,以及菜单内部的子菜单. 视图效果: MainActivity 选项菜单 选项菜单的子菜单 上下文菜单(按住按钮或者EditText弹出) 注意:上下文菜单如何弹出?在注册该菜 ...
- Android Studio下拉菜单
一.菜单概述 本次课我们准备讲解菜单,菜单在安卓应用程序中占有比较重要的位置.原生安卓提供了三种类型的菜单:选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMe ...
- android菜单的类型有几种,Android中的Menu(菜单)的三种类型菜单的学习
今天学习一下菜单组件,在Android中的菜单中有三种①:OptionMenu(选项菜单)②:ContextMenu(上下文菜单) ③:SubMenu(子菜单) 下面分别来学一下 一:OptionMe ...
- android studio上下滚动菜单,Android模仿美团顶部的滑动菜单实例代码
前言 本文主要给大家介绍了关于Android模仿美团顶部滑动菜单的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 先来看下效果图: 实现方法 这是通过 ViewPager ...
- android studio 下拉菜单,android studio 的下拉菜单Spinner使用详解
一.认识Spinner Spinner其实就是一个列表选择框.不过Android的列表选择框并不需要显示下拉列表,而是相当于弹出一个菜单供用户选择. Spinner 与 Gallery 都继承了Abs ...
- Android 应用开发(第2章)---如何增加menu菜单
1.Android studio 增加menu 菜单 新建MenuTest project文件 1).在res上面右键->New->Android resource directory ...
最新文章
- 删除windows上的oracle产品
- Android之横向滑动的广告(网格控件)
- Linux 系统 vsftpd时区问题的解决
- Vue+Openlayer使用Draw实现交互式绘制线段
- Java 线程同步总结
- C++(STL):28 ---关联式容器map用法
- 有用的收藏!javascript/c#/asp.net
- 【BZOJ1901】Zju2112 Dynamic Rankings
- java如何解析word大纲_Java POI 解析word文档
- 电脑问题勘查 —— BIOS
- 积分简明笔记-第一类曲线积分的类型
- [代码整洁之道].(美)马丁.扫描版pdf
- 【c4d学习笔记】OC渲染器安装问题
- JRebel激活教程
- 面试丨求职时这样回答问题你就输了!来自IT面试官视角的深度解读
- UnityShader学习教程之<StandardShader>
- 开发,要谋定而后动。
- steam无法连接至计算机,无法连接至steam网络怎么办 无法连接至steam网络解决方法【图文】...
- React Native 中使用图标
- IP (网络之间互连的协议)