ContextMenu介绍:

假设一个View注冊了上下文菜单。那么当长按该View时便会弹出一个浮动菜单,来供选择下一步操作。

实现这个功能须要调用setOnCreateContextMenuListener来注冊一个监听器。那么它和注冊长按监听器setOnLongClickListener有什么差别呢?以下会在代码中加以測试,通过加入打印发现,用户对某个View长按之后。首先触发的是onLongClick函数,运行onLongClick操作,然后依据onLongClick的返回值推断是不是运行OnCreateContextMenuListener函数。假设onLongClick返回false。则会继续运行OnCreateContextMenuListener函数,假设返回true。忽略OnCreateContextMenuListener函数。

代码例如以下:

public class MainActivity extends ActionBarActivity {

ImageView mImageView ;

MyContextMenuClickListener mContextListener;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.fragment_main);

mImageView = (ImageView) findViewById(R.id.image);

mContextListener = new MyContextMenuClickListener();

mImageView.setOnCreateContextMenuListener(mContextListener);

//test

mImageView.setOnLongClickListener(new OnLongClickListener() {

@Override

public boolean onLongClick(View arg0) {

// TODO Auto-generated method stub

Log.d("Test", "onLongClick");

return false;

}

});

}

private class MyContextMenuClickListener implements OnCreateContextMenuListener , OnMenuItemClickListener{

@Override

public boolean onMenuItemClick(MenuItem item) {

// TODO Auto-generated method stub

switch(item.getItemId()){

case R.id.open:

Log.d("Test", "click open");

break;

case R.id.delete:

Log.d("Test", "click delete");

break;

case R.id.remove:

Log.d("Test", "click remove");

break;

default:

break;

}

return true;

}

@Override

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

// TODO Auto-generated method stub

Log.d("Test", "onCreateContextMenu");

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.context_menu, menu);

LayoutInflater layoutInflater = getLayoutInflater();

View view = (View) layoutInflater.inflate(

R.layout.menu_header, null);

menu.setHeaderView(view);

MenuItem open = menu.findItem(R.id.open);

open.setOnMenuItemClickListener(mContextListener);

MenuItem delete = menu.findItem(R.id.delete);

delete.setOnMenuItemClickListener(mContextListener);

MenuItem remove = menu.findItem(R.id.remove);

remove.setOnMenuItemClickListener(mContextListener);

}

}

}

context_menu.xml

>

android:title="delete"/>

android:title="open"/>

android:title="remove"/>

menu_header.xml

xml version="1.0" encoding="UTF-8"?

>

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="This is a Test"

/>

假设须要自己关闭ContextMenu弹框。能够调用:

getActivity().closeContextMenu();

android 动态contextmenu,Android ContextMenu的使用相关推荐

  1. android 动态 dex,Android 动态加载dex

    首先如果仅仅是因为64K method的问题可以直接看这里DexGuard.Proguard.Multi-dex给出的解决方案. 本文主要讨论从编译层面,dex动态加载器选择层面以及安全层面讨论dex ...

  2. android 动态label,Android仿抖音实现动态壁纸

    一.概述: 壁纸运行在一个Android服务之中,这个服务的名字叫做WallpaperService.当用户选择了一个壁纸之后,此壁纸所对应的WallpaperService便会启动并开始进行壁纸的绘 ...

  3. android+动态模糊效果,Android 动态高斯模糊效果教程

    写在前面 最近一直在做毕设项目的准备工作,考虑到可能要用到一个模糊的效果,所以就学习了一些高斯模糊效果的实现.比较有名的就是 FastBlur 以及它衍生的一些优化方案,还有就是今天要说的Render ...

  4. android 动态渐变,Android 动态修改渐变 GradientDrawable

    Android 绘图学习 1GradientDrawable 简介 以前的文章写过 Android中渐变实现方式 前面的文章 讲解了如何实现渐变类似LinearGradient,SweepGradie ...

  5. android 动态字幕,Android之如何用TextView实现滚动字幕的效果【跑马灯】

    TextView 实现滚动字幕效果[跑马灯效果]: android:ellipsize="marquee"//可滚动,star(头部),middle(中部),end(尾部) 超出显 ...

  6. android动态jar,Android动态加载Jar(包含第三方依赖Jar)

    最近项目有一个需求,需要根据用户需求动态加载APP内某功能模块,且当该部分功能模块代码有变动,只需更新该功能JAR,无需更新整个APK,基于这个需求,决定采用动态加载Jar的方式去实现,于是各种查资料 ...

  7. android动态service,Android基础回顾之Service

    Service 四大组件之一,是Android的一种机制,服务是运行在主线程上的,没有界面 1.service和Thread的区别和场景 Thread: 程序执行的最小单元,它是分配CPU的基本单位. ...

  8. android 动态注册,Android studio实现动态注册Native方法

    说到动态就有静态,但是静态的注册在上一篇文章中已经包含了,这里就不在赘述了,直接说动态实现. 这里我们分步走. 1.创建android工程 选择普通工程 项目命名 不出意外,项目一会就建立完成. 2. ...

  9. android动态逆向,Android逆向之动态分析so篇

    斗哥这期将给大家带来Android逆向的动态分析,主要简述了Android动态分析环境配置与IDA调试so文件.学习Android逆向动态分析前,一定要有基础环境支持,比如sdk.jdk等,所以在动态 ...

  10. Android动态listview,Android列表组件ListView使用详解之动态加载或修改列表数据

    在使用ListView组件来显示列表数据时,有的时候我们需要改变列表中的数据,有以下方法: 1.重新给ListView组件设置适配器 这种方法重新创建了ListView,效率不好. 2.使用适配器中的 ...

最新文章

  1. Android提高21篇之二:SurfaceView的基本使用方法
  2. python常见函数
  3. 「SNOI2019」
  4. 查看虚拟机cpu型号_虚拟机管理器(Virtual Machine Manager)简介 | Linux 中国
  5. java 文件名空格,java关于文件名带有空格的个人见解
  6. Bootstrap 模态对话框只加载一次 remote 数据的解决办法
  7. webpack5打包普通html项目,webpack打包其他资源
  8. 中小学生计算机一等奖李广圆,喜报:昌乐一中学生在第二十届全国中小学电脑制作活动中获两项大奖...
  9. 电脑硬盘为什么要分区
  10. Arcgis使用教程(十)ARCGIS地图制图之固定比例尺设计
  11. 导出开发板上的根文件系统,并打包制成img镜像
  12. 网页界面滚动截图(长图)的三种实用方法总结
  13. sql怎么实现线性排序_如何在SQL中实现排序间接
  14. 福禄克9100校准仪维修案例
  15. 搭建Web环境初识JSP
  16. 羊了个羊游戏开发思路是什么?
  17. 《当程序员的那些狗日日子》(四十四)是办公室还是牢房
  18. 全球5大云计算厂商的全球部署的节点图
  19. 第1.7章 elasticsearch线上问题集1
  20. 三菱Q系列QJ71C24N模块 MODBUS通信(含完整步骤+源代码)

热门文章

  1. cloudflare部署php,CloudFlare加速WordPress:页面规则配置
  2. 解决“无法定位序数***于动态链接库iertutil.dll上”的问题
  3. (可下载)《中国城市数字经济发展报告》发布,北上深成第1梯队
  4. Smarty教程[4]
  5. eclipse项目jdk如何从1.7改为1.8
  6. 00002 贪婪洞窟.003.3:装备
  7. 罗杰软工第三次作业——结对编程
  8. 计算机硬盘系统的五个基本组成部分,计算机的五大组成部分
  9. 负载均衡算法居然有这么多种!!!负载均衡算法总结
  10. 在线表单信息收集+word模板展示信息(excel收集信息word打印)Excel一行或者多行信息导入word打印