android 动态contextmenu,Android ContextMenu的使用
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的使用相关推荐
- android 动态 dex,Android 动态加载dex
首先如果仅仅是因为64K method的问题可以直接看这里DexGuard.Proguard.Multi-dex给出的解决方案. 本文主要讨论从编译层面,dex动态加载器选择层面以及安全层面讨论dex ...
- android 动态label,Android仿抖音实现动态壁纸
一.概述: 壁纸运行在一个Android服务之中,这个服务的名字叫做WallpaperService.当用户选择了一个壁纸之后,此壁纸所对应的WallpaperService便会启动并开始进行壁纸的绘 ...
- android+动态模糊效果,Android 动态高斯模糊效果教程
写在前面 最近一直在做毕设项目的准备工作,考虑到可能要用到一个模糊的效果,所以就学习了一些高斯模糊效果的实现.比较有名的就是 FastBlur 以及它衍生的一些优化方案,还有就是今天要说的Render ...
- android 动态渐变,Android 动态修改渐变 GradientDrawable
Android 绘图学习 1GradientDrawable 简介 以前的文章写过 Android中渐变实现方式 前面的文章 讲解了如何实现渐变类似LinearGradient,SweepGradie ...
- android 动态字幕,Android之如何用TextView实现滚动字幕的效果【跑马灯】
TextView 实现滚动字幕效果[跑马灯效果]: android:ellipsize="marquee"//可滚动,star(头部),middle(中部),end(尾部) 超出显 ...
- android动态jar,Android动态加载Jar(包含第三方依赖Jar)
最近项目有一个需求,需要根据用户需求动态加载APP内某功能模块,且当该部分功能模块代码有变动,只需更新该功能JAR,无需更新整个APK,基于这个需求,决定采用动态加载Jar的方式去实现,于是各种查资料 ...
- android动态service,Android基础回顾之Service
Service 四大组件之一,是Android的一种机制,服务是运行在主线程上的,没有界面 1.service和Thread的区别和场景 Thread: 程序执行的最小单元,它是分配CPU的基本单位. ...
- android 动态注册,Android studio实现动态注册Native方法
说到动态就有静态,但是静态的注册在上一篇文章中已经包含了,这里就不在赘述了,直接说动态实现. 这里我们分步走. 1.创建android工程 选择普通工程 项目命名 不出意外,项目一会就建立完成. 2. ...
- android动态逆向,Android逆向之动态分析so篇
斗哥这期将给大家带来Android逆向的动态分析,主要简述了Android动态分析环境配置与IDA调试so文件.学习Android逆向动态分析前,一定要有基础环境支持,比如sdk.jdk等,所以在动态 ...
- Android动态listview,Android列表组件ListView使用详解之动态加载或修改列表数据
在使用ListView组件来显示列表数据时,有的时候我们需要改变列表中的数据,有以下方法: 1.重新给ListView组件设置适配器 这种方法重新创建了ListView,效率不好. 2.使用适配器中的 ...
最新文章
- Android提高21篇之二:SurfaceView的基本使用方法
- python常见函数
- 「SNOI2019」
- 查看虚拟机cpu型号_虚拟机管理器(Virtual Machine Manager)简介 | Linux 中国
- java 文件名空格,java关于文件名带有空格的个人见解
- Bootstrap 模态对话框只加载一次 remote 数据的解决办法
- webpack5打包普通html项目,webpack打包其他资源
- 中小学生计算机一等奖李广圆,喜报:昌乐一中学生在第二十届全国中小学电脑制作活动中获两项大奖...
- 电脑硬盘为什么要分区
- Arcgis使用教程(十)ARCGIS地图制图之固定比例尺设计
- 导出开发板上的根文件系统,并打包制成img镜像
- 网页界面滚动截图(长图)的三种实用方法总结
- sql怎么实现线性排序_如何在SQL中实现排序间接
- 福禄克9100校准仪维修案例
- 搭建Web环境初识JSP
- 羊了个羊游戏开发思路是什么?
- 《当程序员的那些狗日日子》(四十四)是办公室还是牢房
- 全球5大云计算厂商的全球部署的节点图
- 第1.7章 elasticsearch线上问题集1
- 三菱Q系列QJ71C24N模块 MODBUS通信(含完整步骤+源代码)
热门文章
- cloudflare部署php,CloudFlare加速WordPress:页面规则配置
- 解决“无法定位序数***于动态链接库iertutil.dll上”的问题
- (可下载)《中国城市数字经济发展报告》发布,北上深成第1梯队
- Smarty教程[4]
- eclipse项目jdk如何从1.7改为1.8
- 00002 贪婪洞窟.003.3:装备
- 罗杰软工第三次作业——结对编程
- 计算机硬盘系统的五个基本组成部分,计算机的五大组成部分
- 负载均衡算法居然有这么多种!!!负载均衡算法总结
- 在线表单信息收集+word模板展示信息(excel收集信息word打印)Excel一行或者多行信息导入word打印