- 浏览: 3025884 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (893)
- android (110)
- iphone (198)
- java (79)
- JavaScript手册-目录 (9)
- JavaScript手册-Array (19)
- JavaScript手册-Boolean (5)
- JavaScript手册-Date (50)
- JavaScript手册-Math (30)
- JavaScript手册-Number (14)
- JavaScript手册-RegExp (7)
- JavaScript手册-String (38)
- JavaScript手册-全局函数 (8)
- JavaScript实用脚本 (7)
- Others (21)
- java-jpcap (7)
- java-thread (1)
- ibm文章 (3)
- classloader (2)
- java-filter (2)
- 运行环境 (33)
- java-正则 (2)
- oracle (1)
- linux-shell (26)
- wap (1)
- sqlite (3)
- wow (1)
- jvm (1)
- git (5)
- unity3d (29)
- iap (2)
- mysql (23)
- nginx (14)
- tomcat (9)
- apache (2)
- php (1)
- ubuntu (40)
- rsa (1)
- golang (21)
- appstore (5)
- sftp (2)
- log4j (2)
- netty (18)
- 测试工具 (6)
- memcache (5)
- 设计模式 (1)
- centos (8)
- google_iab (5)
- iOS专题 (4)
- mac (10)
- 安装配置帮助手册 (2)
- im4java_graphicsmagick (5)
- inotify-tools (1)
- erlang (6)
- 微信支付 (1)
- redis (8)
- RabbitMQ (5)
最新评论
-
heng123:
Netty视频教程https://www.douban.com ...
netty4.0.23 初学的demo -
maotou1988:
使用Netty进行Android与Server端通信实现文字发 ...
netty4.0.23 初学的demo -
码革裹尸:
非常感谢,正好用上
android 呼入电话的监听(来电监听) -
rigou:
提示的/222.177.4.242 无法链接到ip地址,是什 ...
通过 itms:services://? 在线安装ipa ,跨过app-store -
duwanbo:
GridView与数据绑定
Android 菜单(ContextMenu)
Android 的ContextMenu,即上下文菜单。(类似电脑上的鼠标右键功能,选中某个元素,然后点右键,在弹出菜单上执行操作。)在手机上,通过长时间按住界面上的元素,就会出现事先设计好的上下文菜单。
主要用到的方法有:
// 创建显示上下文菜单 setOnCreateContextMenuListener //监听长按事件 setOnItemLongClickListener //监听普通按键事件 setOnItemClickListener //上下文菜单的选中事件 onContextItemSelected //监听上下文菜单关闭事件 onContextMenuClosed
示例(ListView上下文菜单)
![]() |
![]() |
效果图
main_list_view.xml 配置
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/main_list_view_listview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
main_list_view_item.xml配置
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout_Item" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="5dip" > <TextView android:id="@+id/main_list_view_item_item_text" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20px" android:layout_gravity="center" /> </LinearLayout>
Activity代码
package com.zhouzijing.android; import java.util.ArrayList; import com.zhouzijing.android.util.MenuEntity; import com.zhouzijing.android.util.SimpleAdapterUtil; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnCreateContextMenuListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class Menu2 extends Activity { final Context context = this; //定义1个ListView private ListView listView = null; //定义ListView需要显示的数据 private ArrayList<ArrayList<Object>> viewInfos = null; //定义上下文菜单 final private static int CONTEXT_MENU_EDIT = 0;//菜单[编辑]的编号 final private static int CONTEXT_MENU_SHARE = 1;//菜单[分享]的编号 final private static int CONTEXT_MENU_DELETE = 2;//菜单[删除]的编号 final private static int CONTEXT_MENU_CANCEL = 3;//菜单[取消]的编号 private int itemLongClickSelected = 0; private MenuEntity[] contextMenus = { new MenuEntity(0, CONTEXT_MENU_EDIT, 0, "编辑"), new MenuEntity(0, CONTEXT_MENU_SHARE, 1, "分享"), new MenuEntity(0, CONTEXT_MENU_DELETE, 2, "删除"), new MenuEntity(0, CONTEXT_MENU_CANCEL, 3, "取消"), }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_list_view); //初始化要显示的内容 initListViewInfos(); //显示ListView showListView(); //显示ListView的上下文菜单 showListViewContextMenu(); } /** * 初始化ListView需要显示的内容. */ public void initListViewInfos(){ viewInfos = new ArrayList<ArrayList<Object>>(); ArrayList<Object> countrys = new ArrayList<Object>(); countrys.add("Austria"); countrys.add("China"); countrys.add("Egypt"); countrys.add("France"); countrys.add("Ireland"); countrys.add("Japan"); countrys.add("Spain"); countrys.add("United Kingdom"); countrys.add("United States"); viewInfos.add(countrys); } /** * 从ListView显示内容中删除1条记录. */ public void removeItem(int index){ viewInfos.get(0).remove(index); } /** * 从ListView显示内容中读取1条记录 * @param index * @return */ public Object readItem(int index){ return viewInfos.get(0).get(index); } /** * 读取当前执行的菜单 * @param index * @return */ public CharSequence readContextMenu(int index){ for(int i=0;i<contextMenus.length;i++){ if(contextMenus[i].getItemId()==index) return contextMenus[i].getTitle(); } return ""; } /** * 显示ListView. */ public void showListView(){ final Context context = this; //定义适配器to参数 int[] to = {R.id.main_list_view_item_item_text}; int resource = R.layout.main_list_view_item; //生成适配器:使用自定义工具类 SimpleAdapterUtil.java来生成适配器 SimpleAdapter simpleAdapter = SimpleAdapterUtil.create(context,viewInfos,resource,to); listView = (ListView)findViewById(R.id.main_list_view_listview); listView.setAdapter(simpleAdapter); } /** * 显示ListView的上下文菜单 */ public void showListViewContextMenu(){ //创建上下文菜单 listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener(){ @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle(readItem(itemLongClickSelected).toString()); MenuEntity menuEntity = null; for(int i=0;i<contextMenus.length;i++){ menuEntity = contextMenus[i]; menu.add(menuEntity.getGroupId(),menuEntity.getItemId(),menuEntity.getOrder(),menuEntity.getTitle()); } } }); //监听列表项目的长按事件 listView.setOnItemLongClickListener(new OnItemLongClickListener(){ @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { itemLongClickSelected = position; Toast.makeText(context,"item["+position+":"+readItem(itemLongClickSelected).toString()+"]被长时间点击了.",Toast.LENGTH_SHORT).show(); return false; } }); //监听列表项目的普通点击事件 listView.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(context,"item["+position+":"+readItem(position).toString()+"]被点击了.",Toast.LENGTH_SHORT).show(); } }); } @Override public boolean onContextItemSelected(MenuItem item) {//执行上下文菜单中的菜单 int itemId = item.getItemId(); Toast.makeText(context,"Context menu item["+itemId+":"+readContextMenu(itemId)+"] is Selected.",Toast.LENGTH_SHORT).show(); if(CONTEXT_MENU_DELETE==itemId){//删除 //当前选中的ListView中的item编号 int index = itemLongClickSelected; //在当前ListView中删除选中的元素 removeItem(index); //重新显示ListView showListView(); } return super.onContextItemSelected(item); } @Override public void onContextMenuClosed(Menu menu) {//关闭上下文菜单 Toast.makeText(context,"Context Menu is Closed.",Toast.LENGTH_SHORT).show(); super.onContextMenuClosed(menu); } }
备注:
private MenuEntity[] contextMenus = { new MenuEntity(0, CONTEXT_MENU_EDIT, 0, "编辑"), new MenuEntity(0, CONTEXT_MENU_SHARE, 1, "分享"), new MenuEntity(0, CONTEXT_MENU_DELETE, 2, "删除"), new MenuEntity(0, CONTEXT_MENU_CANCEL, 3, "取消"), };
参考 关于菜单基础属性的实体类
SimpleAdapter simpleAdapter = SimpleAdapterUtil.create(context,viewInfos,resource,to);
参考 1个简单的SimpleAdapter工具类-SimpleAdapterUtil(版本二:数据格式为ArrayList<ArrayList<Object>>)
关于根据上下文菜单来获取当前选中的GridView(或ListView等)的元素
//OnCreateContextMenuListener gridPhoneBook.setOnCreateContextMenuListener(new OnCreateContextMenuListener(){ @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { //获取上下文菜单点击的GridView中的元素 AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; int position = info.position; //设置上下文菜单的标题 PhoneBook phoneBook = (PhoneBook)phoneBookAdapter.getItem(position); menu.setHeaderTitle(phoneBook.getName()); //设置上下文菜单 MenuEntity menuEntity; for(int i=0;i<CONTEXT_MENUS.length;i++){ menuEntity = CONTEXT_MENUS[i]; menu.add(menuEntity.getGroupId(), menuEntity.getItemId() ,menuEntity.getOrder(),menuEntity.getTitle()); } } }); /** * 上下文菜单-具体菜单的执行操作. */ @Override public boolean onContextItemSelected(MenuItem item) { //获取选中的GridView的元素 AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo(); int position = info.position; PhoneBook phoneBook = (PhoneBook)phoneBookAdapter.getItem(position); //菜单ID int menuId = item.getItemId(); switch(menuId){ case CONTEXT_MENU_PHONE_BOOK_DELETE: doContextMenuOfDelete(phoneBook); break; } return super.onContextItemSelected(item); }
发表评论
-
Android Fragment 真正的完全解析(下)
2015-03-25 14:30 1145Android Fragment 真正 ... -
Android Fragment 真正的完全解析(上)
2015-03-25 10:14 942Android Fragment 真正的 ... -
Activity的生命周期方法
2015-03-25 09:54 609一:Activity的生命周期方法 Android ... -
Android在layout xml中使用include
2015-03-25 07:28 1025在Android的layout样式定义中,可以使 ... -
一个支持圆角的快速ImageView:RoundedImageView
2015-03-07 09:50 11125一个支持圆角的快速ImageView:Rounded ... -
ImageView图片设置
2015-03-05 23:08 990显示任意图像,例如图标。ImageView类可以加载 ... -
ListActivity的onListItemClick不响应的解决办法
2015-03-04 17:57 1136ListActivity的onListItemClic ... -
ListView中有控件隐藏或显示造成的显示错误问题
2015-03-03 23:03 1886ListView中有控件隐藏或显示造成的显示错误问题 ... -
Android中Application类用法
2015-03-03 09:12 1027Android中Application类用法 ... -
Android使用Application总结
2015-03-03 09:11 1219Android使用Application ... -
在android中运行java main方法
2015-02-27 10:38 1031在android中运行java main方法 ... -
android BitmapFactory.Options
2015-02-19 21:01 1059public Bitmap inBi ... -
android 基础demo例子
2015-02-16 21:06 860demoDatas.add(new DemoBe ... -
Android大图片裁剪终极解决方案
2015-02-15 17:08 2195Android大图片裁剪终 ... -
Android_照相机Camera_调用系统照相机返回data为空
2015-02-15 14:17 1317Android_照相机Camera_调用系统照相机返回 ... -
Android: 打印Bundle内容
2015-02-15 14:11 3026Android: 打印Bundle内容 有的时 ... -
android线程、UI、AsyncTask
2015-02-13 18:06 1307本文是转摘的,看过了觉得很好!所以转了过来!如果你想要 ... -
Fragment中ListView的使用
2015-02-06 23:01 2155Fragment中ListView的使用 直接 ... -
在安卓开发时用酷派手机无法打印出应用内的日志的解决方法
2014-12-11 20:39 1227在安卓开发时用酷派手机无法打印出应用内的日志的解决方法 ... -
查看安卓APK文件证书的方法
2014-12-04 10:05 1053************************** ...
相关推荐
在Android开发中,上下文菜单(ContextMenu)是一种常用的交互元素,它为用户提供了一种针对特定视图或数据项的操作选项。上下文菜单通常在长按某个视图后弹出,显示与该视图相关的操作。在本文中,我们将深入探讨`...
在Android开发中,`ContextMenu`是用户交互的一种重要方式,特别是在处理列表或视图时,为用户提供更多操作选项。上下文菜单(ContextMenu)通常在长按某个项目时弹出,而不是像常规菜单那样通过菜单键或者汉堡菜单...
在安卓(Android)开发中,`ContextMenu`是一个重要的交互元素,它允许用户在长按某个视图或项时显示一个包含多个操作选项的菜单。这个压缩包文件"安卓Android源码——ContextMenu上下文选项菜单,长按后跳出菜单....
这个"Android ContextMenu 上下文选项菜单,长按后跳出菜单Demo.zip"包含了实现这一功能的示例代码。下面我们将深入探讨Android中的ContextMenu以及如何创建和使用它。 首先,理解ContextMenu的基本概念。...
在Android应用开发中,ContextMenu是用户界面中一个重要的交互元素,它通常在用户长按某个视图或元素时出现,提供一系列与该视图相关的操作选项。本项目以"ContextMenu"为主题,旨在帮助毕业设计的学生深入理解并...
在“Android ContextMenu 上下文选项菜单,长按后跳出菜单”的案例中,我们可以深入学习如何在Android应用中实现这种功能。 首先,要创建ContextMenu,我们需要在AndroidManifest.xml文件中为对应的Activity添加`...
【Android 上下文菜单(ContextMenu)详解】 在 Android 开发中,上下文菜单(ContextMenu)是一种常见的交互方式,它类似于PC上的鼠标右键菜单。当用户在特定的View上长按超过两秒钟时,系统会弹出一个上下文菜单,...
在Android开发中,ContextMenu是一个非常重要的功能,它允许用户在长时间按压某个视图或项时弹出一个上下文相关的操作菜单。这个压缩包“Android代码-ContextMenu上下文选项菜单长按后跳出菜单.zip”包含了关于如何...
在Android开发中,ContextMenu是一个非常重要的交互元素,它允许用户在长按某个视图或控件后弹出一个包含多种操作选项的菜单。这个上下文菜单通常用于提供与选定项目相关的特定操作,如编辑、删除、复制等。下面将...
在Android应用开发中,ContextMenu是用户界面中一个重要的交互元素,它允许用户在长按某个视图或项目时出现一个包含多个操作选项的菜单。这个压缩包中的源码提供了关于如何实现ContextMenu的一个实例,名为...
Android中的菜单主要分为三种类型:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。选项菜单通常在动作栏(ActionBar)上显示,上下文菜单则在长按时触发,而弹出式菜单则在需要时...
在Android开发中,`ContextMenu`是一个非常实用的功能,它为用户提供了一个上下文相关的操作菜单,通常在长按操作后出现。这个功能可以帮助用户对特定视图进行更细致的操作,而无需打开新的活动或对话框。在本文中,...
在Android开发中,`ContextMenu`是一个非常重要的交互元素,它为用户提供了一种在长按操作后展示更多选项的界面。`ContextMenu`不同于普通的`OptionsMenu`,后者通常在屏幕顶部(如Action Bar)显示,而`ContextMenu...
这个压缩包文件“安卓Android源码——ContextMenu 上下文选项菜单,长按后跳出菜单.zip”(实际文件名为“安卓Android源码——ContextMenu 上下文选项菜单,长按后跳出菜单.rar”)可能包含了展示如何在应用中实现`...
智能家居系统中的上下文菜单(ContextMenu)是用户交互的重要组成部分,特别是在智能设备和移动应用程序中。这一概念主要在计算机科学和软件工程领域内被广泛应用,尤其是Android操作系统的设计中。本教学内容将深入...
接下来,我们将深入探讨Android菜单筛选器的实现原理、使用方法以及相关的知识点。 首先,让我们了解一下菜单的基本概念。在Android中,菜单主要用于在非触摸界面(如物理键盘设备)上显示操作选项。它们可以在活动...
Android ContextMenu实例,为EditText文本框添加上下文菜单,菜单激活并显示的方式是,用户在EditText输入框上面长按2秒,即可弹出上下文菜单,如运行截图所示的效果,为实现此功能,创建了onCreateContextMenu ...
1、在android Activity中重写onCreateOptionsMenu(),onOptionsItemSeclected() 与onCreateContextMenu()与onContextItemSelected()来实现OptionsMenu 与ContextMenu菜单。 2、子菜单的使用
上下文选项菜单(ContextMenu)是用户界面设计中的一个重要元素,特别是在移动设备和计算机操作系统中,它为用户提供了一种快速访问与选定内容相关的操作的方式。在Android系统中,当用户长按一个视图或项目时,通常...
这个压缩包“安卓Android源码——ContextMenu 上下文选项菜单,长按后跳出菜单.rar”包含了实现这一功能的源代码示例,名为ContextMenuDemo,下面将详细介绍其背后的原理和实现方式。 首先,理解ContextMenu的基本...