菜单项(Menu)的初步认识 以及 多级菜单(SubMenu)的初步认识


MainActivity.class
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.txt);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//方法一、静态添加 xml方式添加菜单
// getMenuInflater().inflate(R.menu.menu_main, menu);
//方法二、动态添加 代码添加菜单项
MenuItem item = menu.add(1, 100, 1, "赵1"); //参数(groupID , ItemID , order ,title)
item.setTitle("aaa");
menu.add(1,101,1,"赵2");
menu.add(1,102,1,"赵3");
menu.add(1,5,1,"赵4");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
switch (id){
case 100:{
Intent intent = new Intent(MainActivity.this,second_demo.class);
item.setIntent(intent); //跳转到其他activity
textView.setText("点击了" + id);
break;
}
case 101:{
textView.setText("点击了" + id);
break;
}
case 102:{
textView.setText("点击了" + id);
break;
}
case 5:{
textView.setText("点击了" + id);
break;
}
}
return super.onOptionsItemSelected(item);
}
}
---------------------------------------------------------------------------------------------我是华丽丽de分界线-------------------------------------------------------------------------------
SubMenu多级菜单 子菜单

方法一:动态加载
MainActivity.class
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) {
//添加子菜单
//addSubMenu有子菜单的主菜单
SubMenu file = menu.addSubMenu("文件");
SubMenu edit = menu.addSubMenu("编辑");
//嵌套菜单SubMenu
SubMenu A = menu.addSubMenu("第一层");
SubMenu AA = A.addSubMenu("第二层");
SubMenu AAA = AA.addSubMenu("第三层");
AAA.add(3,1,1,"第四层");
file.add(1,1,1,"新建");
file.add(1,2,1,"打开");
file.add(1,3,1,"保存");
file.setHeaderTitle("文件de操作");
edit.add(2, 1, 1, "复制");
edit.add(2,2,1,"粘贴");
edit.add(2,3,1,"剪切");
edit.setHeaderTitle("编辑de操作");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getGroupId() == 1){
switch (item.getItemId()){
case 1:
Toast.makeText(MainActivity.this,"点击了新建",Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(MainActivity.this,"点击了打开",Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(MainActivity.this,"点击了保存",Toast.LENGTH_SHORT).show();
break;
}
}else if(item.getGroupId() == 2){
switch (item.getItemId()){
case 1:
Toast.makeText(MainActivity.this,"点击了复制",Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(MainActivity.this,"点击了粘贴",Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(MainActivity.this,"点击了剪切",Toast.LENGTH_SHORT).show();
break;
}
}
return super.onOptionsItemSelected(item);
}
}
方法二、静态加载
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) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.edit_copy:
Toast.makeText(MainActivity.this,"点击了copy",Toast.LENGTH_SHORT).show();
break;
case R.id.edit_jianqie:
Toast.makeText(MainActivity.this,"点击了剪切",Toast.LENGTH_SHORT).show();
break;
case R.id.edit_nietian:
Toast.makeText(MainActivity.this,"点击了粘贴",Toast.LENGTH_SHORT).show();
break;
case R.id.file_new:
Toast.makeText(MainActivity.this,"点击了新建",Toast.LENGTH_SHORT).show();
break;
case R.id.file_open:
Toast.makeText(MainActivity.this,"点击了打开",Toast.LENGTH_SHORT).show();
break;
case R.id.file_save:
Toast.makeText(MainActivity.this,"点击了保存",Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
menu_main.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:id="@+id/file"
android:title="文件"
app:showAsAction="never" > <menu >
<item
android:id="@+id/file_new"
app:showAsAction="never"
android:title="新建"
/>
<item
android:id="@+id/file_open"
app:showAsAction="never"
android:title="打开"
/>
<item
android:id="@+id/file_save"
app:showAsAction="never"
android:title="保存"
/>
</menu> </item> <item
android:id="@+id/edit"
android:title="编辑"
app:showAsAction="never" > <menu>
<item
android:id="@+id/edit_copy"
app:showAsAction="never"
android:title="复制"
/>
<item
android:id="@+id/edit_nietian"
app:showAsAction="never"
android:title="粘贴"
/>
<item
android:id="@+id/edit_jianqie"
app:showAsAction="never"
android:title="剪切"
/>
</menu> </item> </menu>
菜单项(Menu)的初步认识 以及 多级菜单(SubMenu)的初步认识的更多相关文章
- MVC5+EF6 入门完整教程13 -- 动态生成多级菜单
稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据mode ...
- jquery自定义插件-参数化配置多级菜单导航栏插件
1 自定义菜单导航栏插件的必要性 看图说话,下面是利用自定义的菜单导航栏插件simpleMenu创建的网站导航示例: 插件默认提供的是如上图的导航栏样式,即一二级菜单为横向分布:三四级菜单为纵向分布. ...
- Cocos2d-x lua 游戏中的菜单(Menu)
菜单相关类包含 菜单(Menu)类 和 菜单项( MenuItem )类 Menu类图(派生于Layer) ref <-- Node <-Layer <-- Menu MenuIte ...
- Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点( FROM IBM)
Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点 菜单是各种软件及开发平台会提供的必备功能,Eclipse 也不例外,提供了丰富的菜单,包括主菜单(Main Menu),视图 / ...
- Toolbar 工具栏 菜单 标题栏 Menu
要使用Toolbar,要先将标题栏(ActionBar)关掉: style.xml中:<style name="MainActivityTheme" parent=" ...
- 【转】 Pro Android学习笔记(三四):Menu(5):动态菜单
目录(?)[-] OptionsMenu的创建方式 如何再次创建OptionsMenu 每次访问都重新填充菜单项 OptionsMenu的创建方式 OptionMenu在第一次访问该菜单时调用,只调用 ...
- java生成多级菜单树
使用java实现一个多级菜单树结构 先上数据库 ps_pid字段很重要,是父级菜单的id Menu类 Menu类要新增一个字段,用来存放子菜单 /** * 子菜单列表 */ private List& ...
- Visual C# 2010 实现菜单项和状态栏
演练:向窗体提供标准菜单项 Visual Studio 2010 其他版本 此主题尚未评级 - 评价此主题 可以通过 MenuStrip 控件为窗体提供标准菜单. 此演练演示如何使 ...
- 单片机C语言下LCD多级菜单的一种实现方法
摘要: 介绍了在C 语言环境下,在LCD 液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个结构紧凑.实用的程序模型. 关键词: 液晶显示屏; 多级菜单; 单片机; C 语言; LCD 中 ...
随机推荐
- asp.net网站访问时不能显示页面
web => 属性 => web => servers =>create virtual directory
- Leetcode之分治法专题-654. 最大二叉树(Maximum Binary Tree)
Leetcode之分治法专题-654. 最大二叉树(Maximum Binary Tree) 给定一个不含重复元素的整数数组.一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素. 左 ...
- yso中URLDNS的pop链分析(重新分析整理)
#发现之前对这个链关注的点有点问题,重新分析了一下 由于最近面试的过程中被问到了yso中URLDNS这个pop链的工作原理,当时面试因为是谈到shiro的怎么检测和怎么攻击时谈到了这个.其实在实战中用 ...
- C++之cmath常用库函数一览
cmath是c++语言中的库函数,其中的c表示函数是来自c标准库的函数,math为数学常用库函数. cmath中常用库函数: 函数 作用 int abs(int i); 返回整型参数i的绝对值 dou ...
- 连接池和JDBCTemplate
一:什么是连接池?使用连接池的好处是什么? 连接池就是一个存放数据库连接对象的容器.当系统初始化后,就会向数据库申请一些连接对象存放到容器里,用的时候直接从容器里取,用完后放回连接池. 连接池可以提高 ...
- Reactor系列(二)Flux Mono创建
Flux Mono创建 视频讲解:https://www.bilibili.com/video/av78844777/ FluxMonoTestCase.java package com.exampl ...
- nginx 转发tcp连接
背景:公司有一套工作流服务(jira,confluence,bitbucket),目前jira,confluence配置的是从nginx网关进行转发,bitbucket配置的是直接解析到该主机,现在计 ...
- shell中得到当下路径所有文件夹名称
方法1: for dir in $(ls -al ./|awk '/^d/ {print $NF}') do echo $dir done 方法2: for dir in $(ls ./) d ...
- ubuntu配置vnc服务
今晚比较闲,就用ubuntu系统搭了vnc系统,真的好用(比centos简单多了). 简单介绍下,VNC(Virtual Network Computing)服务是一款优秀的屏幕分享及远程连接服务,基 ...
- 【leetcode算法-简单】14. 最长公共前缀
[题目描述] 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","fl ...