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的使用的更多相关文章

  1. wesome-android

    awesome-android Introduction android libs from github System requirements Android Notice If the lib ...

  2. android 为组件添加contextMenu上下文菜单

    package com.example.fragmentNavigation2.fragment; import android.os.Bundle; import android.support.v ...

  3. Android之ContextMenu的使用方法以及与OptionMenu的区别

    >> ContextMenu是android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有“cut”, ...

  4. Android菜单详解(四)——使用上下文菜单ContextMenu

    之前在<Android菜单详解(二)——创建并响应选项菜单>和<Android菜单详解(三)——SubMenu和IconMenu>中详细讲解了选项菜单,子菜单和图标菜单.今天接 ...

  5. Android实战技巧: ListView之ContextMenu无法弹出

    问题 Activity中使用了ListView作为布局.当每一列表项中含有默认能获取焦点的子View时有可能会对ListView的某些事件有影响: 1. OnItemClick 2. OnItemLo ...

  6. Android进阶(二十八)上下文菜单ContextMenu使用案例

    上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...

  7. Android笔记:ContextMenu

    ContextMenu,称为上下文菜单,也就是长按界面不放,弹出的菜单.使用ContextMenu有三个步骤: (1)调用registerForContextMenu()方法,为视图注册上下文菜单: ...

  8. Android 菜单 之 上下文菜单ContextMenu

    所谓上下文菜单就是当我们长按某一个文件时弹出的菜单 操作这个菜单我们要重写onCreateContextMenu()方法 如上一篇文章一样,对于这个菜单中选型的操作也有动态添加和xml文件添加两种方法 ...

  9. Android之ContextMenu的使用方法以及与OptionMenu的区别(转)

    >> ContextMenu是android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有“cut”, ...

随机推荐

  1. 利用python+tkinter开发一个点名软件

    最近上课学生多名字记不住,名册忘记了带,要点名怎么办,好久没有写代码了,于是自己写了个点名软件,记录下吧,第一次接触TK也不是太熟悉,写的不太好,记录下源代码 以后遇到要写桌面软件还是可以耍耍的. t ...

  2. gdb打印vector

    1.gdb版本大于7.0 (gdb) p yourVector 2.打印整个vector (gdb) p *(yourVector._M_impl._M_start)@yourVector.size( ...

  3. 使用IDEA 搭建一个SpringBoot + Hibernate + Gradle

    ---恢复内容开始--- 打开IDEA创建一个新项目: 第一步: 第二步: 第三步: 最后一步: 如果下载的时候时间太久.可以找到build.gradle文件,添加以下代码.如下图 maven{ ur ...

  4. ios -使用NSLayoutConstraint实现多个view等宽等高等间距

    @interface ViewController () { UIView *firstView; UIView *secondView; UIView *thirdView; } @end @imp ...

  5. 【SQL】ROWNUM和ROWID

    一.ROWNUM ROWNUM伪列是Oracle先查到结果集之后再加上去的一个伪列,这个伪列对符合条件的结果添加一个从1开始的序列号,并且序列号是从1开始增序排列的. SQL> select r ...

  6. 蘑菇街TeamTalk应用安卓源码

    该源码是蘑菇街TeamTalk应用源码,该产品目标用户为中小型企业用户,支持单聊和群聊,提供文字.表情和图片的富文本实时聊天功能 详细说明:http://android.662p.com/thread ...

  7. QS之force(3)

    Example in project - First force signals in certain time and then noforce signals after some time. # ...

  8. String类面试坑题

    1.面试坑题F:\SHJT\JavaWorkspace\JavaSE\workspace\day13ezra\src\cn\itcast\sh\classcode\BTStringLastIndexO ...

  9. RSA PKCS1 填充方式

    1)RSA_PKCS1_PADDING 填充模式,最常用的模式 要求:输入 必须 比 RSA 钥模长(modulus) 短至少11个字节, 也就是 RSA_size(rsa) – 11    如果输入 ...

  10. mui scrollTo到指定位置,出现空白页及拉不动的问题解决

    使用方式简介 mui 列表页使用的是 mui的插件实现的上拉加载下拉刷新,但是从详情页回到列表页时 不能回到之前的位置.所以想到了使用缓存. 第一次和第二次的试验是失败的.失败后,就想用其他办法来解决 ...