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方法开始 ...
随机推荐
- python中的find、rfind、index、rindex
find()从左向右寻找子序列的位置,如存在多个相同子序列只返回第一个查找到的位置,如果子序列不存在返回-1 rfind()从右向左寻找子序列的位置..... index()从左向右寻找子序列的位置, ...
- 关于 Container ,Injection
1.容器的历史 容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的 ...
- HTML5 Canvas 小例子 旋转的时钟
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Asp.Net前台调用后台变量
1.Asp.Net中几种相似的标记符号: < %=...%>< %#... %>< % %>< %@ %>解释及用法 答: < %#... %&g ...
- NSNotification相关
NSNotification处理过程是一个同步的过程.它的消息回调函数执行的线程跟发送消息代码(也就是postNotification)所在的线程相同,一个Notification发出后,在回调函数执 ...
- 好玩的Raft动画演示,原理秒懂
关于Raft原理,许多朋友也许不是很明白原理,下面的地址是一个好玩的Raft动画,看完后能够很快的掌握Raft原理: http://thesecretlivesofdata.com/raft/ 动画中 ...
- Eclipse开发Web常见异常
1.java.lang.IllegalStateException: Web app root system property already set to different value 错误原因: ...
- C#可变参数params
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestPara ...
- How to Pronounce the Numbers 1 – 10
How to Pronounce the Numbers 1 – 10 Share Tweet Share Tagged With: Numbers Numbers are something you ...
- Delphi 透明窗体显示文字
设置窗体属性:BorderStyle 属性设置为 bsNoneColor 属性设置为 clWhite(白色:窗体背景色)TransparentColor 属性设置为 trueTransparentCo ...