- 浏览: 6303053 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (745)
- JQuery (25)
- JS (33)
- 数据库 (59)
- Java基础 (56)
- JSON (8)
- XML (8)
- ireport (7)
- 设计模式 (10)
- 心情 (14)
- freemarker (1)
- 问题 (15)
- powerdesigner (2)
- CSS (15)
- DWR (4)
- tomcat (16)
- Hibernate (12)
- Oracle (7)
- Struts (7)
- Spring (34)
- JSP (23)
- 需学习 (64)
- 工具类库 (63)
- Maven (14)
- 笔试题 (34)
- 源码学习 (31)
- 多线程 (39)
- Android (32)
- 缓存 (20)
- SpringMVC (14)
- jQueryEasyUi (12)
- webservice-RPC (13)
- ant (1)
- ASP.NET (10)
- 正则表达式 (3)
- Linux (15)
- JBoss (1)
- EJB (3)
- UML (2)
- JMS (3)
- Flex (8)
- JSTL (2)
- 批处理 (5)
- JVM (16)
- 【工具】 (16)
- 数据结构 (29)
- HTTP/TCP/Socket (18)
- 微信 (1)
- tomcat源码学习 (15)
- Python (30)
- 主机 (2)
- 设计与架构 (19)
- thrift-RPC (2)
- nginx (6)
- 微信小程序 (0)
- 分布式+集群 (12)
- IO (1)
- 消息队列 (4)
- 存储过程 (8)
- redis (9)
- zookeeper (5)
- 海量数据 (5)
最新评论
-
360pluse:
技术更新,战术升级!Python爬虫案例实战从零开始一站通网盘 ...
Python爬虫实战:Scrapy豆瓣电影爬取 -
18335864773:
推荐用 pageoffice 组件生成 word 文件。
JAVA生成WORD工具类 -
jjhe369:
LISTD_ONE 写道起始地址为163.135.0.1 结束 ...
IP地址与CIDR -
baojunhu99:
private final int POOL_SIZE = 5 ...
使用CompletionService获取多线程返回值 -
LovingBaby:
胡说,javascript 运行时是单线程的,event lo ...
Ajax请求是否可以实现同步
上下文菜单(通过在某元素上长按,来呼出菜单)
选项菜单(通过按手机上的菜单按钮,来呼出菜单)
重写 onCreateContextMenu 用以创建上下文菜单
重写 onContextItemSelected 用以响应上下文菜单
重写 onCreateOptionsMenu 用以创建选项菜单
重写 onOptionsItemSelected 用以响应选项菜单
当每次Menu显示时,会调用方法onPrepareOptionsMenu,也可以在菜单每次被调用时,对菜单中的项重新生成,通过重载onPrepareOptionsMenu来实现,由于每次调用时都要重新生成,对于那些不经常变化的菜单,效率就会比较低。
调用Menu.addSubMenu()方法,为某个菜单项添加子菜单
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); // 创建 R.id.txt1 的上下文菜单 if (v == (TextView) this.findViewById(R.id.txt1)) { menu.setHeaderIcon(R.drawable.icon01); //设置菜单的图标 menu.setHeaderTitle("我是菜单"); //设置菜单的标题 // 用 ContextMenu.add() 来增加菜单项,返回值为 MenuItem // 第一个参数:组ID // 第二个参数:菜单项ID 即onContextItemSelected(MenuItem item)中item.getItemId // 第三个参数:顺序号 // 第四个参数:菜单项上显示的内容 menu.add(1, 0, 0, "菜单1"); // MenuItem - 新增菜单项后的返回类型,针对菜单项的其他设置在此对象上操作 menu.add(1, 1, 1, "菜单2").setCheckable(true); } // 创建 R.id.txt2 的上下文菜单(多级上下文菜单) else if (v == (TextView) this.findViewById(R.id.txt2)) { // ContextMenu.addSubMenu("菜单名称") - 用来添加子菜单。子菜单其实就是一个特殊的菜单 SubMenu sub = menu.addSubMenu("父菜单1"); sub.setIcon(R.drawable.icon01); sub.add(0, 0, 0, "菜单1"); sub.add(0, 1, 1, "菜单2"); sub.setGroupCheckable(1, true, true); SubMenu sub2 = menu.addSubMenu("父菜单2"); sub2.setIcon(R.drawable.icon01); sub2.add(1, 0, 0, "菜单3"); sub2.add(1, 1, 1, "菜单4"); sub2.setGroupCheckable(1, true, false); } }
Example:
自己运行加修改的例子
package com.example.firstandroid; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private final int MENU1 = 1; private final int MENU2 = 2; private final int MENU3 = 3; private final int MENU4 = 4; private final int MENU5 = 5; private final int MENU6 = 6; private final int MENU7 = 7; private final int MENU8 = 8; private final int MENU9 = 9; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* * TextView textView = new TextView(this); * textView.setText("Hello Android World!"); */ // setContentView(textView); /* * TextView v = (TextView)findViewById(R.id.txt); String text = * getString(R.string.androidTxt); v.setText(text); */ // ((LinearLayout)findViewById(R.id.layout)).addView(textView); TextView v1 = (TextView) findViewById(R.id.txt1); TextView v2 = (TextView) findViewById(R.id.txt2); TextView v3 = (TextView) findViewById(R.id.txt3); registerForContextMenu(v1); registerForContextMenu(v2); registerForContextMenu(v3); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 0:case 1:case 2: case 3: case 4:case 5: case 6:case 7: case 8: case 9: Toast.makeText(this, "你选择的是 "+item.getTitle()+ " 菜单", Toast.LENGTH_SHORT).show(); break; default://对没有处理的事件,交给父类来处理 return super.onContextItemSelected(item); } return super.onContextItemSelected(item); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderIcon(R.drawable.ic_action_search); // 父菜单图标 switch (v.getId()) { case R.id.txt1: menu.setHeaderTitle("我是菜单"); menu.add(0, MENU1, 0, "菜单1"); menu.add(0, MENU2, 1, "菜单2"); menu.add(0, MENU3, 2, "菜单3").setCheckable(true); break; case R.id.txt2: SubMenu s1 = menu.addSubMenu("父菜单1"); s1.setIcon(R.drawable.ic_action_search); //貌似没啥作用 s1.add(0, 5, 0, "菜单1"); s1.add(0, 6, 1, "菜单2"); s1.add(0, 7, 2, "菜单3"); SubMenu s2 = menu.addSubMenu("父菜单2"); s2.setHeaderIcon(R.drawable.setting); s2.add(1, 8, 0, "菜单3"); s2.add(1, 9, 1, "菜单4"); s2.add(1, 10, 2, "菜单5"); SubMenu s3 = menu.addSubMenu("父菜单3"); //会显示,但没有子菜单 break; case R.id.txt3: //1、通过xml文件来添加菜单 //getMenuInflater().inflate(R.menu.activity_main, menu); menu.setHeaderTitle("联系人操作"); menu.add(1,MENU1,1,"呼叫").setIcon(R.drawable.setting); menu.add(1,MENU2,2, "清除记录").setIcon(R.drawable.setting); menu.add(1,MENU3,3,"切换到Q信").setIcon(R.drawable.setting).setEnabled(false); //menu.add(2,MENU_Q,3,"切换到Q信").setIcon(R.drawable.setting).setEnabled(false); menu.add(2,MENU4,4,"加入黑名单").setIcon(R.drawable.setting); menu.add(2,MENU5,5,"加入白名单").setIcon(R.drawable.setting); SubMenu subMenu = menu.addSubMenu(2, MENU6, 6, "系统设置").setIcon(R.drawable.setting); subMenu.add(1, MENU7, 2, "网络设置"); subMenu.add(1, MENU8, 3, "高级设置"); subMenu.add(1, MENU9, 4, "安全设置"); } } //二、选项菜单 private static final int MENU_CALL = Menu.FIRST; //1 private static final int MENU_DELETE = Menu.FIRST+1; private static final int MENU_Q = Menu.FIRST+2; private static final int MENU_BLACK_LIST = Menu.FIRST+3; private static final int MENU_WHITE_LIST = Menu.FIRST+4; /** 只有当Menu菜单首次被显示时会调用此方法 */ @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); //1、通过xml文件来添加菜单 //getMenuInflater().inflate(R.menu.activity_main, menu); //2、通过手动添加来配置上下文菜单选项 menu.add(1,MENU_CALL,1,"呼叫").setIcon(R.drawable.setting); menu.add(1,MENU_DELETE,2, "清除记录").setIcon(R.drawable.setting); menu.add(2,MENU_Q,3,"切换到Q信").setIcon(R.drawable.setting).setEnabled(false); menu.add(2,MENU_BLACK_LIST,4,"加入黑名单").setIcon(R.drawable.setting); menu.add(2,MENU_WHITE_LIST,5,"加入白名单").setIcon(R.drawable.setting); SubMenu subMenu = menu.addSubMenu(2, MENU6, 6, "系统设置").setIcon(R.drawable.setting); subMenu.add(1, MENU7, 2, "网络设置"); subMenu.add(1, MENU8, 3, "高级设置"); subMenu.add(1, MENU9, 4, "安全设置"); // 如果希望显示菜单,请返回true return true; } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()) { //XML方式 /*case R.id.id_call: Toast.makeText(this, "你选择的是 呼叫 菜单", Toast.LENGTH_LONG).show(); break; case R.id.id_delete: case R.id.id_himsg: case R.id.id_black: case R.id.id_white: Toast.makeText(getApplicationContext(), "你选择的是 "+item.getTitle()+ " 菜单", Toast.LENGTH_SHORT).show(); break; */ //addMenu方式,使用case 1: ... case 1:case 2:case 3: case 4:case 5: case 6:case 7:case 8: case 9: Toast.makeText(getApplicationContext(), "你选择的是 "+item.getTitle()+ " 菜单", Toast.LENGTH_SHORT).show(); break; default://对没有处理的事件,交给父类来处理 return super.onMenuItemSelected(featureId, item); } //返回true表示处理完菜单项的事件,不需要将该事件继续传播下去了 return super.onMenuItemSelected(featureId, item); } /** 当每次Menu显示时,会调用此方法*/ @Override public boolean onPrepareOptionsMenu(Menu menu) { // TODO Auto-generated method stub return super.onPrepareOptionsMenu(menu); } }
选项菜单:
其中的系统设置:
上下文菜单:
第一个:
第二个:
第三个:
其中的系统设置:
That's all ! 哈哈
其中例子参考学习:
http://liuzhichao.com/p/402.html#more-402
http://blog.csdn.net/tenggangren/article/details/7996193
http://www.cnblogs.com/linjiqin/archive/2011/03/08/1977636.html
发表评论
-
选择照片和拍照
2018-06-13 15:31 1620Android拍照或从本地选择图片上传 Android ... -
PullToRefresh的简单使用
2018-05-31 16:06 1246Android下拉刷新控件--PullToRefresh的简 ... -
fragment内嵌fragment之间传值+切换fragment
2018-05-30 11:59 13369跳转: 从一个Fragment跳转到另一个Fragmen ... -
控件使用问题
2018-05-22 09:59 1493TextView最大长度限制,超出部分省略号显示 xml ... -
ViewPager+RadioGroup+TabLayout
2018-05-22 09:38 1070ViewPager: ViewPager 详解(五)-- ... -
网络请求工具类HttpUtils
2018-05-19 21:07 2378代码如下: import android.app.Acti ... -
android排版布局学习
2018-05-18 16:24 3826Android开发学习之路--UI之基本布局 andro ... -
[工具]-Android切图
2018-05-18 14:21 1466切图小科普!聊聊原生APP切图那些事儿 安卓APP设计规 ... -
【Android基础问题】
2018-05-18 13:49 6931、appcompat_v7: appcompat_v7 ... -
WebView使用
2018-05-17 17:42 1143Android:最全面的 Webvie ... -
《第一行代码》服务+AsyncTask+定时任务
2018-04-23 09:45 172914、服务 服务(Service)是 Androi ... -
《第一行代码》通知+接收拦截发送短信
2018-04-23 09:44 165113、通知 在活动里 ... -
《第一行代码》内容提供器
2018-04-20 16:08 122412、内容提供器 内容提供器(Content Pro ... -
《第一行代码》数据存储
2018-04-20 16:07 62611、数据存储 将数据存储到文件中 ope ... -
《第一行代码》广播
2018-04-20 15:34 94910、广播接收器(Broadcast Receive ... -
《第一行代码》控件、布局、碎片
2018-04-20 14:40 8678、控件 TextView: a ... -
【Android studio配置和错误】
2018-04-20 14:21 3924Gradle是一个基于Apache Ant和Apache ... -
《第一行代码》基础总结
2016-07-12 22:07 1857activity的生命周期—— ... -
《第一行代码》扩展总结
2016-06-29 15:28 1292Android更新UI的两种方法——handler与run ... -
Android快速开发工具类
2016-01-21 14:56 1950来源:http://blog.csdn.net/lmj62 ...
相关推荐
在Android活动中使用Menu,简单的程序。适应于初学者。 通过res中创建Menu文件,在Activity中通过onCreateOptionsMenu()方法和onOptionsItemSelected()方法实现菜单栏功能
Menu(菜单)是Android中一定会使用的模块,每个Android项目都会用到Menu来给用户起到选择和导航的作用,提升用户体验,...①在res下的menu中创建file_menu.xml: <?xml version=1.0 encoding=utf-8?> <me
主要介绍了Android 中menu同时显示图标和文字的实现的相关资料,希望通过本文能帮助到大家实现这样的功能,需要的朋友可以参考下
android 另类menu菜单提示android 另类menu菜单提示android 另类menu菜单提示android 另类menu菜单提示android 另类menu菜单提示
android menu菜单距中显示
android sliding menu 滑动菜单
Android 按Menu弹出菜单,九宫格样式。
Android DropDownMenu下拉菜单,漂亮的样式
Android Menu用法全面讲解。这是博客《Android Menu用法全面讲解》的示例项目。
Android Menu和ListView 整合设计 源码 package com.MyMenu; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteCursor; import android.os.Bundle; import ...
android Menu菜单。android Menu菜单。android Menu菜单。android Menu菜单。
AndroidMenu控件源码 AndroidMenu控件源码 AndroidMenu控件源码
android-dropdown-menu An dropdown menu for android, you can attach your own listView(s) with this. 文档 DropdownMenu Demo Usage You can use this to make several(as you want) listViews act like ...
DropDownMenu for Android,filter the list based on multiple condition. To get this project into your build Step 1. Add the specific repository to your build file: repositories { maven { url ...
android 中 menu 控件的用法和代码样例,方便使用
android Menu 和 RadioGroup RadioButton的用法
android里使用menu,包括OptionMenu、ContextMenu、SubMenu,适合初学者,非常简单的代码,另外里面还附加了一个word文档教程,欢迎广大初学android的朋友下载使用!注释也很多的!
Android menu单选菜单.rar
Android 炫酷弹出菜单,不一样的Menu,打开项目导入即可。