Android系统中的ContextMenu(上下文菜单)类似于PC中的右键弹出菜单,当一个视图注册到一个上下文菜单时,执行一个在该对象上的“长按”动作,将出现一个提供相关功能的浮动菜单。上下文菜单可以被注册到任何视图对象中,不过,最常见的是用于列表视图ListView的item,在按中列表项时,会转换其背景色而提示将呈现上下文菜单。

注意:上下文菜单不支持图标和快捷键。

为了创建一个上下文菜单,你必须重写这个活动的上下文菜单回调函数:onCreateContextMenu() 和 onContextItemSelected()。在回调函数onCreateContextMenu()里,你可以通过使用一个add()方法来添加菜单项,或者通过扩充一个定义在XML中的菜单资源。然后,通过registerForContextMenu()为这个视图注册一个上下文菜单ContextMenu.

下面我通过一个实例Demo来展示下ContextMenu的基本使用,通过手动添加Menu菜单和XML文件两种方式来配置Menu的选项。

[1] 该Demo的工程结构目录图如下:

[2] res/layout目录下的main.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">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello,This is Andy's Blog!"/>
<ListView
android:id="@+id/lv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>

[3] res/menu目录下的 cmenu.xml 菜单选项文件源码如下:

<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/add" android:title="增加"/>
<item android:id="@+id/update" android:title="更新"/>
<item android:id="@+id/delete" android:title="删除"/>
</menu>

[4] com.andyidea.menudemo包下的 MenuActivity.java 源码如下:

package com.andyidea.menudemo;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MenuActivity extends Activity {
ListView lv;
private ArrayAdapter<String> adapter;
private List<String> alist = new ArrayList<String>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv = (ListView)findViewById(R.id.lv);
alist.add("第一");
alist.add("第二");
alist.add("第三");
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,alist);
lv.setAdapter(adapter);
//注册视图对象,即为ListView控件注册上下文菜单
registerForContextMenu(lv);
}
/**
* 创建上下文菜单选项
*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
//1.通过手动添加来配置上下文菜单选项
//menu.add(0, 1, 0, "修改");
//menu.add(0, 2, 0, "删除");
//2.通过xml文件来配置上下文菜单选项
MenuInflater mInflater = getMenuInflater();
mInflater.inflate(R.menu.cmenu, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
/**
* 当菜单某个选项被点击时调用该方法
*/
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()){
case 1:
Toast.makeText(this, "你选择了手动修改", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "你选择了手动删除", Toast.LENGTH_SHORT).show();
break;
case R.id.add:
Toast.makeText(this, "你选择了XML增加", Toast.LENGTH_SHORT).show();
break;
case R.id.update:
Toast.makeText(this, "你选择了XML更新", Toast.LENGTH_SHORT).show();
break;
case R.id.delete:
Toast.makeText(this, "你选择了XML删除", Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
/**
* 当上下文菜单关闭时调用的方法
*/
@Override
public void onContextMenuClosed(Menu menu) {
// TODO Auto-generated method stub
super.onContextMenuClosed(menu);
}
}

[5] Demo运行后的运行截图如下:

Android中上下文菜单选项--ContextMenu相关推荐

  1. Android之上下文菜单创建

    平时我们看到应用中长安一个文字或者按钮,会弹出菜单,从而选择一些菜单项,那到底是怎样实现的呢? 今天我们就介绍这种菜单(上下文菜单) 创建上下文菜单只需要三步: 1.registerForContex ...

  2. ListActivity加上下文菜单

    首先解释一下什么是上下文菜单,Android中上下文菜单就是ContextMenu.他的效果就像是PC机上的鼠标右键,当为一个视图注册了上下文菜单之后,长按(2秒左右)这个视图对象就会弹出一个浮动菜单 ...

  3. Android之选项菜单和上下文菜单解析

    选项菜单 创建选项菜单 Activity类的onCreateOptionMenu事件方法用来创建选项菜单,该方法定义如下: @Overridepublic boolean onCreateOption ...

  4. (4.0.15.3)Android 的上下文菜单: ContextMenu的使用方法以及与OptionMenu的区别

    ContextMenu是Android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有"cut" ...

  5. android 关闭上下文菜单,【Android笔记】ContextMenu上下文菜单

    ContextMenu上下文菜单 1.ContextMenu菜单的组成部分 标题及标题图标 菜单内容 菜单内容的点击响应事件 2.ContextMenu与OptionMenu的区别 OptionMen ...

  6. 【Android基础知识】选项菜单、上下文菜单、子菜单的使用

    Android菜单类型 菜单是为了增加更多的功能,不占用屏幕的空间.Android中菜单类型有三类,选项菜单(OptionMenu).上下文菜单(ContextMenu).子菜单(SubMenu),下 ...

  7. Android三种常用菜单Menu(OptionMenu,ContextMenu,PopupMenu)的详细讲解使用(全网最详细)

    一. OptionMenu 1.首先在项目目录下的res资源目录下,新建一个资源文件夹menu (1)res目录的位置如下 (2)新建名称为menu的包 2.然后在menu的包下新建Menu Reso ...

  8. android之三大菜单(子菜单,选项菜单,上下文菜单)

    今天班级同学聚餐,真的是喝的有点多,本来计划今天要完成这篇博客.有点喝多了,写的不好请见谅.想仔细了解的话,看官网说的,是中文的. https://developer.android.com/guid ...

  9. Android开发——菜单(Menu)-——上下文菜单(ContextMenu)、 弹出菜单(PopupMenu)

    上下文菜单(ContextMenu) 长按某个view不放,就会在屏幕中间弹出ContextMenu. 一个Activity中间只可能有一个OptionMenu,但一个Activity中间有多个Vie ...

最新文章

  1. 2022-2028年中国自动驾驶系统行业现状调研分析报告
  2. 如何快速融入团队(八)
  3. 分区表--SQLServer创建分区表
  4. Linux下修改Mysql数据库存放路径
  5. 对python源码进行编译,加密python脚本
  6. JavaEE 的基本实现
  7. 8s保留cpu设置_华为Mate 20 Pro的第二彩蛋-开发者人员选项可以这么设置
  8. 唐山大地震 昨夜万人首映 尚雯婕演唱《23秒,32年》使观众情绪得以第二次温暖爆发...
  9. python执行速度太慢为什么还_为什么你写的Python运行的那么慢呢?
  10. PHP通过身份证号码获取性别、出生日期、年龄等信息
  11. css两列等高,多种方法实现div两列等高(收集整理)
  12. Photoshop 抠图(基础篇)
  13. Tableau学习摘录总结①(层次、聚合度和颗粒度层次、聚合度和颗粒度,字段(离散和连续),小建议)
  14. 获取天气预报ajax,Ajax 通过城市名获取数据(全国天气预报API)
  15. ⭐李宏毅2020作业2---logistic regression
  16. 使用tensorflow:LSTM神经网络预测股票(三)
  17. python中init函数详解_Python 中__init__函数以及参数self
  18. 软件测试流程-全程软件测试
  19. 【射频知识】PCB材料/层叠/信号注入设计与传输线实现形式的性能比对
  20. php5.6.36 xdebug,php配置xdebug | Soo Smart!

热门文章

  1. git如何将本地分支关联到远程分支
  2. 为什么需要API接口开发?
  3. 经验分布函数与格里纹科定理
  4. ContentProvider android:exported = “true”
  5. 计算机2级题无法打开,计算机2级考题word 一  看了必过
  6. linux tf2 中文,tf2+cnn+中文文本分类优化系列(2)
  7. ps2键盘测试软件,stm32_ps2键盘显示测试程序
  8. Java基础——Java多继承的三种实现方式
  9. UDS诊断系列介绍13-31服务
  10. 正则表达式中,表示匹配非数字字符的字符