Android笔记:ContextMenu
ContextMenu,称为上下文菜单,也就是长按界面不放,弹出的菜单。使用ContextMenu有三个步骤:
(1)调用registerForContextMenu()方法,为视图注册上下文菜单;
(2)重写Activity的onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo)方法,调用Menu的add方法添加菜单项(MenuItem)
(3)重写onContextItemSelected(MenuItem item)方法,响应菜单单击事件;
注:步骤(2)中的方法参数ContextMenuInfo menuInfo有什么作用?
有时候,视图元素需要向上下文菜单传递一些信息,比如该View对应DB记录的ID等,这就要使用ContextMenuInfo。需要传递额外信息的View需要重写getContextMenuInfo()方法,返回一个带有数据的ContextMenuInfo实现类对象。
以下程序参考自《android应用开发详解》
MainActivity.java
import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends Activity {
private TextView contextMenuView; //定义TextView
private static final int ITEM1=Menu.FIRST;
private static final int ITEM2=Menu.FIRST+1;
private static final int ITEM3=Menu.FIRST+2;
private static final int ITEM4=Menu.FIRST+3; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contextMenuView=(TextView)findViewById(R.id.contextTest);
//注册上下文菜单
registerForContextMenu(contextMenuView); } //重写方法,并添加菜单选项
public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){
menu.add(0,ITEM1,0,"复制");
menu.add(0,ITEM2,0,"全选");
menu.add(0,ITEM3,0,"分享");
menu.add(0,ITEM4,0,"搜索");
}
//响应菜单事件
public boolean onContextItemSelected(MenuItem item){
switch(item.getItemId()){
case ITEM1:
Toast.makeText(this, "You have click 'copy'",Toast.LENGTH_SHORT ).show();
break;
case ITEM2:
Toast.makeText(this, "You have click 'all copy'",Toast.LENGTH_SHORT ).show();
break;
case ITEM3:
Toast.makeText(this, "You have click 'share'",Toast.LENGTH_SHORT ).show();
break;
case ITEM4:
Toast.makeText(this, "You have click 'search'",Toast.LENGTH_SHORT ).show();
break; }
return true;
}
}
activity_main.xml如下 :
<TextView
android:id="@+id/contextTest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="长按屏幕显示ContextMenu" />
代码运行结果如下:
Android笔记:ContextMenu的更多相关文章
- Android笔记——Android中数据的存储方式(二)
我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...
- Android之ContextMenu的使用方法以及与OptionMenu的区别
>> ContextMenu是android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有“cut”, ...
- Android笔记:触摸事件的分析与总结----TouchEvent处理机制
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://glblong.blog.51cto.com/3058613/1559320 ...
- Android 笔记之 R 文件
Android笔记之R文件 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: red; te ...
- Android 笔记之 Android 系统架构
Android笔记之Android系统架构 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: ...
- Android笔记之使用Glide加载网络图片、下载图片
Glide简介 不想说太多,真的很方便:P)可以节省我不少时间 GitHub地址:https://github.com/bumptech/glide 加载网络图片到ImageView Glide.wi ...
- Android笔记--View绘制流程源码分析(二)
Android笔记--View绘制流程源码分析二 通过上一篇View绘制流程源码分析一可以知晓整个绘制流程之前,在activity启动过程中: Window的建立(activit.attach生成), ...
- Android笔记--View绘制流程源码分析(一)
Android笔记--View绘制流程源码分析 View绘制之前框架流程分析 View绘制的分析始终是离不开Activity及其内部的Window的.在Activity的源码启动流程中,一并包含 着A ...
- Android笔记--自定义控件仿遥控器的圆形上下左右OK圆盘按钮
原文:Android笔记--自定义控件仿遥控器的圆形上下左右OK圆盘按钮 上面就是几张预览图!代码在最底下 主要就两个步骤,画图.监听点击 1.整个控件基本上是一步步画出来的,重写onDraw方法开始 ...
随机推荐
- 16.纯 CSS 创作一个渐变色动画边框
原文地址:https://segmentfault.com/a/1190000014785816 感想:边框是伪元素::after来的: HTML代码: <div class="box ...
- python学习笔记_week7
一.面向对象编程进阶 静态方法只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性 class Dog(object): def __init__(self,name): self.na ...
- JavaScript进行简单的随即验证码生成(适合和我一样刚入门一本完整的教材书都没看完的弟弟)
(感谢橙旭园给我打开了前端世界的大门) var checkcode = document.getElementById("code"); var btn = document.ge ...
- nginx压缩,缓存
https://www.darrenfang.com/2015/01/setting-up-http-cache-and-gzip-with-nginx/ https://www.linuxdashe ...
- Python : 什么是*args和**kwargs
让生活Web个够 先来看个例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '-- ...
- [转载]Core Elements of a Program
原文链接 http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-c ...
- 为什么使用DLL
(1) 如果不同的程序使用相同的 DLL,只需将 DLL 在内存中装载一次,这样节省了系统内存.DLL 映射到每个进程(每运行一次应用程序)的专用地址空间中,但它们的代码使用的内存影像程序只在内存中装 ...
- 10. Lambda表达式.md
为了简化匿名内部类的代码,具体定义: 例如将9.内部类中的匿名内部类例子: 原来代码: //Main.java public class Main { public static void main( ...
- HTML+CSS基础课程二
1.border为系统加边框<style type="text/css"> table tr td,th{border:1px solid #000;} </st ...
- Android sdk 目录结构说明
1.add-on:附加的包:2.docs:HTML格式的离线文档:3.platforms:sdk核心内容:4.tool:工具. 在platforms中包含了的各个Android SDK版本的目录中,包 ...