Android学习(二十三)SubMenu 子菜单
一、SubMenu子菜单
和功能菜单相似,但是可以添加子菜单。
二、实现步骤:
1、通过onCreateOptionsMenu方法创建子菜单,可以通过代码动态创建,也可以通过xml进行创建。
2、通过onOptionsItemSelected方法实现点击子菜单的事件。
三、参考代码:
1、通过代码动态创建子菜单:
main.java
package com.example.zhengcheng.submenudemo; import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast; public class MainActivity extends ActionBarActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
//通过代码动态创建子菜单
SubMenu menu_file = menu.addSubMenu("文件"); //创建文件菜单
SubMenu menu_edit = menu.addSubMenu("编辑"); //创建编辑菜单 //为文件菜单创建子菜单
menu_file.add(1, 101, 1, "新建");
menu_file.add(1, 102, 1, "打开");
menu_file.add(1, 103, 1, "保存");
menu_file.setHeaderTitle("文件操作"); //设置菜单标题
menu_file.setHeaderIcon(R.mipmap.ic_launcher); //设置菜单图标 //为编辑菜单创建子菜单
menu_edit.add(2, 101, 1, "复制");
menu_edit.add(2, 102, 1, "粘贴");
menu_edit.add(2, 103, 1, "剪切");
menu_edit.setHeaderTitle("编辑操作"); //设置菜单标题
menu_edit.setHeaderIcon(R.mipmap.ic_launcher); //设置菜单图标
return true;
} /**
* 点击子菜单按钮后触发的操作
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getGroupId()) {
case 1:
//点击了第一组子菜单,对应第一组子菜单下的按钮
switch (item.getItemId()) {
case 101:
Toast.makeText(this, "点击了新建", Toast.LENGTH_SHORT).show();
break;
case 102:
Toast.makeText(this, "点击了打开", Toast.LENGTH_SHORT).show();
break;
case 103:
Toast.makeText(this, "点击了保存", Toast.LENGTH_SHORT).show();
break;
}
break;
case 2:
//点击了第二组子菜单,对应第二组子菜单下的按钮
switch (item.getItemId()) {
case 101:
Toast.makeText(this, "点击了复制", Toast.LENGTH_SHORT).show();
break;
case 102:
Toast.makeText(this, "点击了粘贴", Toast.LENGTH_SHORT).show();
break;
case 103:
Toast.makeText(this, "点击了剪切", Toast.LENGTH_SHORT).show();
break;
}
break;
} return super.onOptionsItemSelected(item);
}
}
2、通过xml创建子菜单
生成子菜单文件
menu.xml
<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=".MainActivity">
<item
android:title="文件"
app:showAsAction="never">
<menu>
<item
android:id="@+id/menu_new"
android:title="新建"/>
<item
android:id="@+id/menu_open"
android:title="打开" />
<item
android:id="@+id/menu_save"
android:title="保存" />
<item
android:id="@+id/menu_exit"
android:title="退出" />
</menu>
</item>
<item
android:title="编辑"
app:showAsAction="never">
<menu>
<item
android:id="@+id/menu_copy"
android:title="复制" />
<item
android:id="@+id/menu_paste"
android:title="粘贴" />
<item
android:id="@+id/menu_cut"
android:title="剪切" />
</menu>
</item>
</menu>
main.java:后台代码文件
package com.example.zhengcheng.submenudemo; import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast; public class MainActivity extends ActionBarActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
//导入xml菜单内容
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
} /**
* 点击子菜单按钮后触发的操作
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {
case R.id.menu_new:
Toast.makeText(this, "点击了新建", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_open:
Toast.makeText(this, "点击了打开", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_save:
Toast.makeText(this, "点击了保存", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_exit:
Toast.makeText(this, "点击了退出", Toast.LENGTH_SHORT).show();
finish();
break;
case R.id.menu_copy:
Toast.makeText(this, "点击了复制", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_paste:
Toast.makeText(this, "点击了粘贴", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_cut:
Toast.makeText(this, "点击了剪切", Toast.LENGTH_SHORT).show();
break;
} return super.onOptionsItemSelected(item);
}
}
Android学习(二十三)SubMenu 子菜单的更多相关文章
- Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
菜单的概念,现在已经很普及了.Windows系统.Mac.桌面版Linux.Java Swing等,都有可视化菜单.一.Android平台3种菜单 选项菜单(OptionMenu).上下文菜单(Co ...
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- Android学习笔记之横向二级菜单实现
PS:元旦来一发. 学习内容: 1.Android二级横向菜单的实现过程.效果如上图... 这种横向的二级菜单在很多的app都有所应用.效果看起来还是非常的美观的.也算是项目需要,自己也就学了一下 ...
- android 学习随笔十三(网络:多线程下载)
多线程断点续传下载1.多线程:快* 原理:抢占服务器资源* 单线程下载:线程从第0个字节开始下,下到最后一个字节,在本地硬盘的临时文件中从第0个字节开始写,写到最后一个字节,下载完成时,临时文件也写完 ...
- Android学习(十三) BroadcastReceiver组件(广播)
一.Broadcast(广播) 是一种广泛应用在应用程序之间传输信息的机制. 二.Broadcast(广播接收器) 是对发送出来的广播进行过滤接收并响应的一类组件,它就是用来接收来自系统和应用中的广播 ...
- Salesforce LWC学习(二十三) Lightning Message Service 浅谈
本篇参考: https://trailhead.salesforce.com/content/learn/superbadges/superbadge_lwc_specialist https://d ...
- Android学习二_八:Animation的使用(一) (转)
一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等,这些效果可以应用在绝大 ...
- android学习二(Activity)
前面我简单的介绍了android的一些基础知识,当作热身吧,接下来接触android的四大组件的activity活动. 1.活动Activity是是一种保护用户界面的组件,主要用于和用户进行交互. 活 ...
- 前端学习(二十三)DOM操作,事件(笔记)
javascript 组成部分 1.ECMAScript javascript的核心解释器 2.DOM Document Object Modle 文 ...
随机推荐
- [ CodeVS冲杯之路 ] P1214
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1214/ 这道题类似于最长区间覆盖,仅仅是将最长区间改成了最多线段,我们贪心即可 先将线段直接右边-1,然后按左边为第一 ...
- loj 数列分块入门 5 7 8
5 题意 给出一个长为\(n\)的数列,以及\(n\)个操作,操作涉及区间开方,区间求和. 思路 用\(tag\)记录这一块是否已全为\(1\). 除分块外,还可用 树状数组+并查集(链表) 或者 线 ...
- sunos 修改shell为bash
root:x:::Super-User:/:/sbin/sh 改为 root:x:::Super-User:/:/usr/bin/bash 修改/增加 .profile 文件,在¥HOME路径下 ex ...
- 非常好的博客!!!linux内存管理概述【转】
转自:http://blog.csdn.net/bullbat/article/details/7166140 inux内存管理建立在基本的分页机制基础上,在linux内核中RAM的某些部分将会永久的 ...
- 2.tornado请求与响应
之前我们介绍了tornado的基础流程,但还遗留了一些问题.今天我们就来解决遗留问题并学习新的内容 settings,使用tornado.web.Application(handler, **sett ...
- UVA Live 6437 Power Plant 最小生成树
题意: 有许多油井和村庄什么的,让你使得这些村庄能连通一个油井就好了.第一行给你一个数字T代表有T组测试数据,第二行有 M , N , K ,M代表包括油井在内的村庄数,N 代表有N个 两两连通的地方 ...
- Wannafly挑战赛22 A-计数器(gcd,裴蜀定理)
原题地址 题目描述 有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,an中的任意一个整数,操作次数不限(可以为0次),问计数器的值对m取模后有几种可能. 输入描述: ...
- 洛谷——P1143 进制转换
P1143 进制转换 题目描述 请你编一程序实现两种不同进制之间的数据转换. 输入输出格式 输入格式: 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进 ...
- AOJ 0531:Paint Color(二维离散+imos)
[题目链接] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0531 [题目大意] 给出一张图,和一些矩形障碍物,求该图没被障碍物覆 ...
- Codeforces Round #535 (Div. 3) [codeforces div3 难度测评]
hhhh感觉我真的太久没有接触过OI了 大约是前天听到JK他们约着一起刷codeforces,假期里觉得有些颓废的我忽然也心血来潮来看看题目 今天看codeforces才知道居然有div3了,感觉应该 ...