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”, ...
随机推荐
- hdoj--5630--Rikka with Chess(规律题)
Rikka with Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- 利用tensorflow实现前向传播
import tensorflow as tf w1 = tf.Variable(tf.random_normal((2, 3), stddev=1, seed=1))w2 = tf.Variable ...
- C语言程序创建文件
#include <stdio.h>#include <stdlib.h>int main() { FILE *fp;if((fp=fopen("g:\\a.txt& ...
- [转]rdlc报表中表达式的使用--switch和IIF范例
本文转自:http://hi.baidu.com/oypx1234/item/5b35dec4e03a3ad697445266 =Switch( Fields!MLWHLO.Value = " ...
- js数据管理的思考
最近要做一个农场项目,涉及到很多js数据管理的需求,这里也做下总结,不断的总结,再修正内容,也是快速进步的方法. 数据管理几个方面考虑: * 设置(更新)字段值 * 检索,根据id, index, 属 ...
- MyBatis动态条件、一对多、整合spring(二)
输入映射和输出映射 Mapper.xml映射文件定义了操作数据库的sql,每一个sql是一个statement,映射文件是mybatis的核心. parameterType输入类型 1.传递简单类型 ...
- 上传预览图片的插件jquery-fileupload
上传预览图片的插件jquery-fileupload github地址:https://github.com/blueimp/jQuery-File-Upload 中文文档:http://www.jq ...
- 网页前端状态管理库Redux学习笔记(一)
最近在博客园上看到关于redux的博文,于是去了解了一下. 这个Js库的思路还是很好的,禁止随意修改状态,只能通过触发事件来修改.中文文档在这里. 前面都很顺利,但是看到异步章节,感觉关于异步说得很乱 ...
- JVM 性能调优监控工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解
转自: https://my.oschina.net/feichexia/blog/196575 摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConso ...
- C#第十五节课
函数复习 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System. ...