- 浏览: 6358591 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (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 1675Android拍照或从本地选择图片上传 Android ... -
PullToRefresh的简单使用
2018-05-31 16:06 1311Android下拉刷新控件--PullToRefresh的简 ... -
fragment内嵌fragment之间传值+切换fragment
2018-05-30 11:59 13473跳转: 从一个Fragment跳转到另一个Fragmen ... -
控件使用问题
2018-05-22 09:59 1561TextView最大长度限制,超出部分省略号显示 xml ... -
ViewPager+RadioGroup+TabLayout
2018-05-22 09:38 1129ViewPager: ViewPager 详解(五)-- ... -
网络请求工具类HttpUtils
2018-05-19 21:07 2433代码如下: import android.app.Acti ... -
android排版布局学习
2018-05-18 16:24 3902Android开发学习之路--UI之基本布局 andro ... -
[工具]-Android切图
2018-05-18 14:21 1528切图小科普!聊聊原生APP切图那些事儿 安卓APP设计规 ... -
【Android基础问题】
2018-05-18 13:49 7451、appcompat_v7: appcompat_v7 ... -
WebView使用
2018-05-17 17:42 1208Android:最全面的 Webvie ... -
《第一行代码》服务+AsyncTask+定时任务
2018-04-23 09:45 179714、服务 服务(Service)是 Androi ... -
《第一行代码》通知+接收拦截发送短信
2018-04-23 09:44 171513、通知 在活动里 ... -
《第一行代码》内容提供器
2018-04-20 16:08 129912、内容提供器 内容提供器(Content Pro ... -
《第一行代码》数据存储
2018-04-20 16:07 70011、数据存储 将数据存储到文件中 ope ... -
《第一行代码》广播
2018-04-20 15:34 100810、广播接收器(Broadcast Receive ... -
《第一行代码》控件、布局、碎片
2018-04-20 14:40 9278、控件 TextView: a ... -
【Android studio配置和错误】
2018-04-20 14:21 4074Gradle是一个基于Apache Ant和Apache ... -
《第一行代码》基础总结
2016-07-12 22:07 1929activity的生命周期—— ... -
《第一行代码》扩展总结
2016-06-29 15:28 1346Android更新UI的两种方法——handler与run ... -
Android快速开发工具类
2016-01-21 14:56 2004来源:http://blog.csdn.net/lmj62 ...
相关推荐
Android 中menu同时显示图标和文字的实现 Android 中menu同时显示图标和文字的实现是 Android 应用程序中常见的一种需求。默认情况下,Android 中的menu条目在设置其showAsAction=”never”时,默认只显示文字...
在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`通常出现在活动(Activity)的顶部作为选项菜单,或者在...
在Android开发中,Menu通常用于显示应用程序中的操作选项,如在顶部栏或下拉菜单中。自定义Menu允许开发者根据应用需求设计独特的交互方式和视觉样式。本篇将深入探讨如何在Android中实现自定义Menu。 首先,我们...
1. 为了处理Menu中的点击事件,需要重写`onOptionsItemSelected(MenuItem item)`方法: ```java @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id....
在Android应用开发中,"按Menu弹出菜单"是一个常见的功能,它允许用户访问应用程序的主要操作选项。在Android系统中,Menu通常是通过按下设备屏幕右上角的菜单按钮或者长按Home键来触发的。这种九宫格样式的菜单设计...
在Android开发中,`DropDownMenu`是一种常见的交互元素,它允许用户从一组选项中选择一个,通常用于空间有限的界面,如顶部导航栏或者侧滑菜单。本资源提供了`Android DropDownMenu`的一个实现,特点是拥有漂亮的...
在Android开发中,Menu是应用界面中不可或缺的一部分,它通常用于在特定的上下文(如选项栏或右上角的三点菜单)中显示一组操作。然而,除了传统的Menu设计之外,开发者还可以创建“另类”Menu菜单来提供更加独特且...
在Android开发中,自定义`Menu`是一种常见的需求,它允许开发者根据应用的特性提供更加个性化的操作选项。本文将深入探讨如何在Android中实现自定义`Menu`,结合源码解析以及工具的使用,帮助你更好地理解这一过程。...
在Android开发中,UI设计是用户体验的关键组成部分,而Menu作为一种重要的交互元素,常常用于实现应用程序中的下拉选项或操作选项。本教程将深入探讨如何在Android中创建炫酷的弹出菜单,让你的应用脱颖而出。 首先...
在Android应用开发中,菜单(Menu)是用户界面不可或缺的一部分,它通常用于提供应用程序的各种操作选项。本项目“Android_Menu.rar”聚焦于Android系统中如何创建和使用简单的菜单功能,适用于初学者理解并掌握这一...
在安卓(Android)开发中,实现半透明Menu效果是一种常见的需求,这通常涉及到自定义视图、主题样式以及动画的应用。这份"安卓Android源码——半透明Menu效果源码.zip"压缩包提供了一个实例,帮助开发者理解如何创建...
在Android应用开发中,Menu是用户界面中的一个重要组成部分,它通常用于展示应用程序的主要操作选项,让用户能够方便地访问和执行各种功能。在本资源“menu单选菜单.zip”中,我们很显然关注的是如何在Android中创建...
在Android应用开发中,Menu是用户界面中的一个重要组成部分,它提供了在特定上下文中展示一系列操作选项的方式。在标题“Android menu单选菜单.rar”中提到的,我们将关注如何在Android中实现一个单选菜单,即单选列...
在Android应用开发中,滑动菜单(Sliding 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主要用于在不占用屏幕空间的情况下为用户提供多种交互方式,如在活动(Activity)的顶部弹...