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
<?xml version="1.0" encoding="UTF-8"? >
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/CONTEXT_MENU">
<item android:id="@+id/delete"
android:title="delete"/> <item android:id="@+id/open"
android:title="open"/> <item android:id="@+id/remove"
android:title="remove"/>
</group>
</menu>
menu_header.xml
<? xml version="1.0" encoding="UTF-8"? >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a Test"
/> </LinearLayout>
假设须要自己关闭ContextMenu弹框。能够调用:
getActivity().closeContextMenu();
Android ContextMenu的使用的更多相关文章
- wesome-android
awesome-android Introduction android libs from github System requirements Android Notice If the lib ...
- android 为组件添加contextMenu上下文菜单
package com.example.fragmentNavigation2.fragment; import android.os.Bundle; import android.support.v ...
- Android之ContextMenu的使用方法以及与OptionMenu的区别
>> ContextMenu是android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有“cut”, ...
- Android菜单详解(四)——使用上下文菜单ContextMenu
之前在<Android菜单详解(二)——创建并响应选项菜单>和<Android菜单详解(三)——SubMenu和IconMenu>中详细讲解了选项菜单,子菜单和图标菜单.今天接 ...
- Android实战技巧: ListView之ContextMenu无法弹出
问题 Activity中使用了ListView作为布局.当每一列表项中含有默认能获取焦点的子View时有可能会对ListView的某些事件有影响: 1. OnItemClick 2. OnItemLo ...
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- Android笔记:ContextMenu
ContextMenu,称为上下文菜单,也就是长按界面不放,弹出的菜单.使用ContextMenu有三个步骤: (1)调用registerForContextMenu()方法,为视图注册上下文菜单: ...
- Android 菜单 之 上下文菜单ContextMenu
所谓上下文菜单就是当我们长按某一个文件时弹出的菜单 操作这个菜单我们要重写onCreateContextMenu()方法 如上一篇文章一样,对于这个菜单中选型的操作也有动态添加和xml文件添加两种方法 ...
- Android之ContextMenu的使用方法以及与OptionMenu的区别(转)
>> ContextMenu是android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有“cut”, ...
随机推荐
- bzoj2503 相框——思路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2503 思路题: 首先,这种问题应该注意到答案只跟度数有关,跟其他什么连接方法之类的完全无关: ...
- JavaI/O 系统
1.JavaI/O 系统概述 A. 输入输出(I/O):指的是计算机与外部世界,或者一个程序与计算机的其余部分之间的接口 B. 流的概念(流:Stream) 流的基本特性:有数据.有方向 2. 流的 ...
- Java压缩技术(一) ZLib
原文:http://snowolf.iteye.com/blog/465433 有关ZLib可参见官方主页 http://www.zlib.net/ ZLib可以简单的理解为压缩/解压缩算法,它与ZI ...
- 判断ascii码是什么的函数
function CharMode(iN){ if (iN>=48 && iN <=57) //数字 return 1; if (iN>=65 && ...
- SpringBoot + MyBatis(注解版),常用的SQL方法
一.新建项目及配置 1.1 新建一个SpringBoot项目,并在pom.xml下加入以下代码 <dependency> <groupId>org.mybatis.spring ...
- MSSQL服务器 电脑改名后配置
原服务器名改为新的名字后,系统配置更新 select * from sys.sysserversexec sp_dropserver 'WIN-JVU5CSOLEPL'exec sp_addserve ...
- 自学Python七 爬虫实战一
此文承接上文,让我们写一个简简单单的爬虫,循序而渐进不是吗?此次进行的练习是爬取前5页什么值得买网站中的白菜价包邮信息.包括名称,价格,推荐人,时间. 我们所需要做的工作:1.确定URL并获得页面代码 ...
- html与css命名规范小结
一.命名规则说明 所有的命名最好都用小写 使用英文命名 给每一个表格和表单加上一个唯一的.结构标记id 给每个图片加上alt标签,优点在于图片发生错误时,alt可以体现给用户 二.相对网页外层重要部分 ...
- ViewPager PagerAdapter 的使用
1: 目的,实现全屏滑动的效果 2:类似于BaseAdapter public class MyPagerAdapter extends PagerAdapter { private Context ...
- MAVEN - 生命周期(1)
三套生命周期: MAVEN拥有三套互相独立的生命周期,分别是:clean.default和site. clean - 清理项目 default - 构建项目 site - 简历项目站点 这其中 ...