菜单(四)给ListView的item添加上下文菜单

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.contextmenu.MainActivity" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
    </ListView>

</RelativeLayout>
package com.example.contextmenu;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private ListView listView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		listView = (ListView) findViewById(R.id.listView1);
		ArrayAdapter<String> arrayAdapter =
				new ArrayAdapter<String>(MainActivity.this,
						android.R.layout.simple_list_item_1,getData());
		listView.setAdapter(arrayAdapter);
		registerForContextMenu(listView);//给listview注册上下文菜单
	}

	public List<String> getData(){
		List<String> list = new ArrayList<String>();
		for(int i = 1; i < 10; i++){
			list.add("list " + i);
		}
		return list;
 	}
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// 加载xml中的上下文菜单
		super.onCreateContextMenu(menu, v, menuInfo);
		MenuInflater menuInflater = getMenuInflater();
		menuInflater.inflate(R.menu.main, menu);
	}
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.edit:
			Toast.makeText(MainActivity.this, "编辑操作", Toast.LENGTH_SHORT).show();
			break;
		case R.id.share:
			Toast.makeText(MainActivity.this, "分享操作", Toast.LENGTH_SHORT).show();
			break;
		case R.id.delete:
			Toast.makeText(MainActivity.this, "删除操作", Toast.LENGTH_SHORT).show();
			break;
		default:
			break;
		}
		return super.onContextItemSelected(item);
	}
}

res/menu/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.contextmenu.MainActivity" >

    <item
        android:id="@+id/edit"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="编辑"/>
    <item
        android:id="@+id/share"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="分享"/>
    <item
        android:id="@+id/delete"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="删除"/>

</menu>

时间: 2024-08-10 23:18:25

菜单(四)给ListView的item添加上下文菜单的相关文章

为工程添加上下文菜单(ContextMenu)

上下文菜单大多数情况下都是为ListView中的Item添加的,长按2S左右跳出菜单,添加上下文菜单必须重写活动中的onCreateContextMenu()方法和onContextItemSelected()方法,前者创建后者监听. 当然也可以通过xml文件创建菜单. private final int MENU_DEL = Menu.FIRST; private final int MENU_MESS = Menu.FIRST+1; public void onCreateContextMe

为listview的item添加动画效果

//动画集合 AnimationSet animationSet = new AnimationSet(true); //alpha动画 Animation animation = new AlphaAnimation(0.0f,1.0f); animation.setDuration(1300); animationSet.addAnimation(animation); //位移动画 效果 从Y方向下落到自己的位置 //RELATIVE_TO_SELF 相对自身 //-1.0f 起始Y坐标为

第 18 章 上下文菜单与上下文操作模式

请参考教材,全面理解和完成本章节内容... ... 本章,我们将为应用实现长按列表项删除crime记录的功能.删除一条crime记录是一种上下文操作(contextual action),即它是与某个特定屏幕视图(单个列表项)而非整个屏幕相关联的. 在Honeycomb以前版本的设备上,上下文操作是在浮动上下文菜单中呈现的.而在之后版本的设备上,上下文操作主要是通过上下文操作栏呈现的.位于activity的操作栏之上,上下文操作栏为用户提供了各种操作,如图18-1所示. 图18-1 长按列表项删

android开发之使用上下文菜单

android中的上下文菜单类似于PC上的鼠标右键单击,不同的是android上没有鼠标这一概念,更谈不上右键单击,在android中,一般是长按某个View,调出上下文菜单.与OptionsMenu不同的是,ContextMenu是一个针对View的菜单,它绑定在某一个View上,而OptionsMenu是属于一个Activity的. 现在大部分浏览器都有长按复制的功能,如下图: 这种效果的实现是使用PopupWindow来实现的(关于PopupWindow的使用可以参见我的另一篇文章popu

安卓开发复习笔记——Menu菜单组件(选项菜单,上下文菜单,子菜单)

菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 菜单的实现方式有2种:一种是通过布局文件xml生成菜单,另一种是通过代码生成. 三种菜单内容有点多,不过大体相似,一次性讲完吧,本人偏好代码动态生成,下面就以代码为例. 1.选项菜单(OptionsMenu) 先来看下选项菜单的效果图:   在一个Activity界面中点击手机Menu键,在屏幕下方弹出的菜单

Andorid——菜单:上下文菜单

一,简介 Android系统中的ContextMenu(上下文菜单)类似于PC的右键弹出菜单,当一个视图注册了上下文菜单,长按该试图对象将出现一个提供相关功能的浮动菜单. 使用: 上下文菜单可以被注册到任何视图中,最常见的是ListView,但是上下文菜单不支持图标和快捷键. 二,调用需要的方法 1,onCreateContextMenu方法:当上下文菜单被创建时 回调该函数 2,onContextItemSelected方法:当上下文菜单某项被选中时回调该函数 3,registerForCon

Android开发长按菜单上下文菜单

安卓开发中长按弹出菜单的创建方法: 1.首先给View注册上下文菜单registerForContextMenu(); 2.添加上下文菜单内容onCreateContextMenu(): ---可以通过代码动态添加: ---可以加载xml文件中的菜单项: 3.设置菜单点击后响应事件onContextItemSelected(); 运行效果图如下: activity_main.xml代码如下: <RelativeLayout android:layout_width="match_paren

安卓开发_浅谈ContextMenu(上下文菜单)

长下文菜单,即长按view显示一个菜单栏 与OptionMenu的区别OptionMenu对应的是activity,一个activity只能拥有一个选项菜单ContextMenu对应的是View,每个View都可以设置上下文菜单一般情况下ContextMenu常用语ListView或者GridView; 创建和响应上下文菜单过程: 1.在activity的onCreate(...)方法中为一个view注册上下文菜单 2.在onCreateContextMenuInfo(...)中生成上下文菜单.

android,关于上下文菜单ContextMenu数据值的转递

在长按某view时,如该view有绑定OnCreateContextMenuListener,则会弹出ContextMenu上下文菜单,这类似于右键菜单,菜单弹出后点击某菜单项,则Activity或Fragment中的 public boolean onContextItemSelected(MenuItem item) 方法会响应菜单的点击,根据item的id来确定点击的是哪一个菜单项,从而进行进一步的操作. 那么现在的问题是,有时候我们只知道了点击的哪个菜单项是不够的,还需要知道更多的信息,