Android菜单(menu)
Android 菜单
我们继续来进行学习,今天写一下在软件中用的还算较多的菜单。
1、Menu
菜单,很显然,作用就是点击不同的选项触发不同的方法。现在在安卓使用中推荐使用ActionBar,但这里我们还是对菜单进行一个简单的解释。
菜单主要分为三类,选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu),下面我们就一个一个来看一下。
(1)选项菜单
当用户单击软件上的菜单按钮,触发事件弹出的菜单框就是选项菜单。
这是效果图

先是布局代码
布局为在res文件夹下新建一个menu文件夹,在此文件夹下建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
android:id="@+id/mune_enter"
android:orderInCategory="100"
android:title="选项一"
app:showAsAction="never"/>
<item
android:id="@+id/mune_setting"
android:orderInCategory="100"
android:title="选项二"
app:showAsAction="never"/>
<item
android:id="@+id/mune_out"
android:orderInCategory="100"
android:title="选项三"
app:showAsAction="never"/>
</menu>
解释一下其中一些属性
- showAsAction 主要是针对这个菜单的显示起作用的,它有三个可选项
- always:总是显示在界面上
- never:不显示在界面上,只让出现在右边的三个点中
- ifRoom:如果有位置才显示,不然就出现在右边的三个点中
下面是java代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//导入菜单布局
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//这里是点击菜单项的触发事件
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.mune_enter:
Toast.makeText(this, "点击选项一", Toast.LENGTH_SHORT).show();
break;
case R.id.mune_setting:
Toast.makeText(this, "点击选项二", Toast.LENGTH_SHORT).show();
break;
case R.id.mune_out:
Toast.makeText(this, "点击选项三", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
(2)上下文菜单
当用户长按Activity页面时,弹出的菜单被称为上下文菜单。一般情况下ContextMenu常用于ListView或者GridView。
效果图

先是布局文件
这里的布局就是下载layout中,父布局为FrameLayout
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"> <ListView
android:id="@+id/mune_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView> </FrameLayout>
这里没什么要说的,直接看下面。
java代码
public class MainActivity extends AppCompatActivity {
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//加载数据
showListView();
// 注册上下文菜单
this.registerForContextMenu(listview);
}
//加载数据
private void showListView() {
listview = (ListView) findViewById(R.id.mune_list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, getDate());
listview.setAdapter(adapter);
}
//创建数据源
private ArrayList<String> getDate() {
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
list.add("菜单" + i);
}
return list;
}
//添加上下文菜单的菜单项
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
menu.setHeaderTitle("上下文菜单");
//加载上下文菜单内容
menu.add(1, 1, 1, "选项一");
menu.add(1, 2, 1, "选项二");
menu.add(1, 3, 1, "选项三");
super.onCreateContextMenu(menu, v, menuInfo);
}
//创建单击事件
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
Toast.makeText(this, "点击选项一", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "点击选项二", Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(this, "点击选项三", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onContextItemSelected(item);
}
}
(3)子菜单
它就是将功能相同的操作进行分组显示,作用在选项菜单上,是选项菜单的二级菜单
效果图

先上布局文件
其实布局文件中可以什么都没有
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SubMenu"
android:textSize="20dp" /> </FrameLayout>
然后是java代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu fileMenu = menu.addSubMenu("查看");
SubMenu editMenu = menu.addSubMenu("输入");
//添加菜单项
fileMenu.add(1, 1, 1, "查看1");
fileMenu.add(1, 2, 1, "查看2");
fileMenu.add(1, 3, 1, "查看3");
editMenu.add(2, 1, 1, "输入1");
editMenu.add(2, 2, 1, "输入2");
editMenu.add(2, 3, 1, "输入3");
return super.onCreateOptionsMenu(menu);
}
//创建点击事件
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getGroupId() == 1) {
switch (item.getItemId()) {
case 1:
Toast.makeText(this, "点击了查看1", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "点击了查看2", Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(this, "点击了查看3", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
} else if (item.getGroupId() == 2) {
switch (item.getItemId()) {
case 1:
Toast.makeText(this, "点击了输入1", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "点击了输入2", Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(this, "点击了输入3", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
return super.onOptionsItemSelected(item);
}
}
上面就是菜单的用法了。。。。。。。
说一下ContextMenu与OptionMenu的区别:
- 1、OptionMenu对应的是activity,一个activity只能拥有一个选项菜单;
- 2、ContextMenu对应的是view,每个view都可以设置上下文菜单;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Android菜单(menu)的更多相关文章
- Android菜单Menu的创建
在res目录下的menu文件夹下创建一个main.xml文件,内容如下: <?xml version="1.0" encoding="utf-8"?> ...
- Android菜单menu控件大全
下载:http://www.see-source.com/androidwidget/list.html?type=16 Android-NewPopupMenu 使用PopupWindow实现的Po ...
- Android——菜单(Menu)
菜单的运用在Android中很常见,今天就两节体育课,闲下来也想认真的学一学,正好项目中也会有应用.我是跟着菜鸟教程进行学习的,我相应的粘了一些我自己认为比较重要的,以供方便记录学习. 本章给大家带来 ...
- Android 菜单 Menu
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to th ...
- Android菜单详解(一)——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
- 从零開始学android<Menu菜单组件.三十.>
在Android系统之中.菜单一共同拥有三类:选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 今天我们就用几个样例来分别介绍下菜单的使用 acti ...
- 【Android】详解Android的menu菜单
在软件应用过程中,菜单的存在是必不可少的,我这次讲一下,我对android菜单的一个基础做法吧 Android的菜单分为三种类型:选项菜单(Option Menu).上下文菜单(Context Men ...
- Android 按Menu弹出菜单
\res\anim\menu_in.xml 资源文件(动画) <?xml version="1.0" encoding="UTF-8"?> & ...
- Android添加Menu菜单
在安卓中添加Menu菜单十分简单. 步骤: 1.在menu文件夹中的main.xml文件中添加要添加的项目. <menu xmlns:android="http://schemas.a ...
随机推荐
- linux下好用软件全记录
开发工具 1. Shutter 抓图工具(用过linux最好的抓图工具,类似win下的Snagit) 2. RabbitVCS SVN客户端(可以和subversion媲美的svn客户端) 3. My ...
- 4——PHP比较&&复制运算符
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- Java入门教程五(数字和日期处理)
Java 提供了处理相关问题的类,包括 Math 类.Random 类.BigInteger 类.Date 类等. Math类 Math 类封装了常用的数学运算,提供了基本的数学操作,如指数.对数.平 ...
- golang在debian下不能用sudo进行使用的问题
sudo ln -s /usr/local/go/bin/go /usr/bin/go 然后就ok了. 去查了下这两个路径的差别,也没查出什么.只是说/usr/bin 是系统预装所在的路径.
- 石油测井专题(六)MCM工艺在LWD的应用
在上一篇的MCM工艺我们提到过石英挠性加速度计的伺服电路采用此工艺可以有效提高仪器产品的稳定性和寿命. MCM相对于印制电路板(PCB)来讲,MCM技术采用了更短的连接长度和更紧密的器件布局,从而降低 ...
- 小白学 Python 数据分析(13):Pandas (十二)数据表拼接
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- python数据分析工具 | pandas
pandas是python下强大的数据分析和探索工具,是的python在处理数据时非常快速.简单.它是构建在numpy之上的,包含丰富的数据处理函数,支持时间序列分析功能,支持灵活处理缺失数据. pa ...
- python基本数据类型的操作
1 列表和元组 1.列表基本操作 1. 列表赋值 a = [1,2,3,4,5,6,7,8] a[0] = 100 #the result : [100, 2, 3, 4, 5, 6, 7, 8] 2 ...
- spring boot actuator服务监控与管理
1.引入actuator所需要的jar包 <dependency> <groupId>org.springframework.boot</groupId> < ...
- 【BIM】BIMFACE中创建矢量文本
背景 在三维模型产品的设计中,针对空间的管理存在这样一个普遍的需求,那就是在三维模型中,将模型所代表的空间通过附加文本的方式来展示其所代表的实际位置或功能,之前尝试过若干方式,比如直接在建模的时候,将 ...