一起学android之磨刀不误砍柴工(5)

平时我们看到应用中长安一个文字或者按钮,会弹出菜单,从而选择一些菜单项,那到底是怎样实现的呢?

今天我们就介绍这种菜单(上下文菜单)

创建上下文菜单只需要三步:

1、registerForContextMenu(你要注册的控件):为控件注册ContextMenu。

2、重写public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) :在这里我们主要是去定义菜单。

3、重写public boolean onContextItemSelected(MenuItem item):我们点击一些菜单项时,做出的一些相应。

以下是一个例子:

主Activity代码:

public class MainActivity extends Activity {
	private TextView context_menu;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		context_menu=(TextView)findViewById(R.id.context_menu);

		/*
		 * 控件注册
		 */
		registerForContextMenu(context_menu);
	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// TODO Auto-generated method stub
		super.onCreateContextMenu(menu, v, menuInfo);
		/*
		 * 添加菜单项xml文件
		 */
		MenuInflater inflater=new MenuInflater(this);
		inflater.inflate(R.menu.menu, menu);

	}

	/*
	 * ContextMenu事件处理
	 */
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		switch (item.getItemId()) {
		case R.id.menu1:
			Toastmake(1);
			break;
		case R.id.menu2:
			Toastmake(2);
			break;
		case R.id.menu3:
			Toastmake(3);
			break;
		case R.id.menu4:
			Toastmake(4);
			break;
		case R.id.menu5:
			Toastmake(5);
			break;

		default:
			break;
		}
		return super.onContextItemSelected(item);
	}
	/*
	 * 测试事件
	 */
	private void Toastmake(int itemid) {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "你点击了菜单项"+itemid, Toast.LENGTH_SHORT).show();
	}

}

activity_layout.xml:

<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=".MainActivity" >

    <TextView
        android:id="@+id/context_menu"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请长按这些文字"
        android:textSize="40sp" />

</RelativeLayout>

res/menu/menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu1"
        android:title="菜单1"/>
    <item
        android:id="@+id/menu2"
        android:title="菜单2"/>
    <item
        android:id="@+id/menu3"
        android:title="菜单3"/>
    <item
        android:id="@+id/menu4"
        android:title="菜单4"/>
    <item
        android:id="@+id/menu5"
        android:title="菜单5"/>

</menu>

效果图:

时间: 2024-10-13 01:43:10

一起学android之磨刀不误砍柴工(5)的相关文章

一起学android之磨刀不误砍柴工(6)

菜单包括选项菜单(OptionMenu).上下文菜单(ContextMenu).子菜单(SubMenu). 创建子菜单(SubMenu)的步骤: 1.重写Activity的onCreateOptionMenu(Menu menu)的方法,在此方法中通过Menu对象的方法添加菜单. 2.响应菜单的单击事件,重写Activity的onOptionItemSelected(MenuItem mi)方法 代码如下: public class MainActivity extends Activity {

磨刀不误砍柴工

最近碰到个问题,在五个工作日内阅读一个百万行左右代码量的新项目集合,如何解决呢? 第一个工作日,环境观察.待在那个项目组,看项目成员们在做些什么事情,开发,测试,聊天,或多或少可以收集到一些项目相关的零散信息,这是看和听了.适当向项目成员咨询一下平时项目的一些基本情况,这就是问了.第一个工作日对项目开发环境有一定了解就好,比如开发的方式,是一步步的瀑布法,还是一个个功能的敏捷法:比如数据权限,是有测试环境和生产环境之分的:比如项目组成员情况,每个人的做事风格是有区别的,如果留心观察和思考,会发现

编码规范总结——磨刀不误砍柴工

目录 1.简介... 2 2.适用范围... 2 3.规范目的... 2 4.代码组织与风格... 2 4.1 Tab键... 2 4.2 缩进... 3 4.3空行... 3 4.4函数长度... 3 4.5行宽... 3 4.6{ “,”} 3 5.文件命名... 3 6.命名... 4 6.1基本约定... 4 6.2程序集命名... 4 6.3命名空间命名... 4 6.4类和接口命名... 5 6.5方法命名... 5 6.7变量命名... 5 6.8组件名称缩写列表... 5 6.9

Xcode常用快捷键-磨刀不误砍柴工

option + cmd + enter 打开辅助视图 cmd + enter 关闭辅助视图 辅助视图即多个窗口 cmd + ?? 或者(ctrl + A) 移动到行尾 cmd + ?? 或者(ctrl + E) 移动行首 cmd + ?? 文件首 cmd + ?? 文件尾 cmd + L 跳到某一行 cmd + N 新建文件 cmd + Z undo shift + cmd + Z redo cmd + ] 右缩进tab cmd + [ 左缩进tab ? (option)+ ?? 移到单词右侧

磨刀不误砍柴工!vs2010快捷键大全

最常用的快捷键: VS2012变化的快捷键: 注释::VS2010是(Ctrl+E,C),VS2012是(Ctrl+K, Ctrl+C),实际操作,按住Ctrl键不放,先按K键,再按C键.相当于Ctrl+K加 Ctrl+C的组合键 反註解:VS2010是(Ctrl+E,U),VS2012是(Ctrl+K, Ctrl+U)   1. 强迫智能感知:Ctrl+J:2.强迫智能感知显示参数信息:Ctrl-Shift-空格:3.格式化整个块:Ctrl+K+F4. 检查括号匹配(在左右括号间切换): Ct

磨刀不误砍柴工,使用visual studio之前应该先了解这些...

注:以下的快捷键在vs2010中测试无误. 众所周知,vs是一个非常强大的开发平台,但是又有多少小伙伴熟悉以下这些快捷键呢? 当然,不知道这些快捷键与开发并没有直接关系,不过,就我而言,以下这些快捷键在开发当中确实为我提高了开发速度: 1 ctrl+f:快速查找,+H:快速替换,+g:查找行号. 2 ctrl+k,x:插入代码段 +k,s :插入外侧代码. 3 ctrl+x删除当前行 或者用 ctrl+shift+l. 4 ctrl+j:智能提示,列出成员 ,ctrl+r+w:调出虚线 ,+e,

磨刀不误砍柴工-git新手教程

先说一点题外话 作为一个初入行业的菜鸡,在工作一年的这个阶段才开始使用代码托管,感到很惭愧.不过今天惭愧不是重点,重点是我在这里想讲一下关于使用git的好处.一些常用的方法和一些常见的问题. 不管是在校生还是初入职场,我们在写程序的时候都会遇到一个问题: "诶,代码怎么编译不过" "我把哪改了,怎么到处都是错误" "糟了,改不回去了" 我想刚开始进入敲代码行业的人都或多或少会遇到诸如此类的问题.当然我也遇到了,给大家看看我最初的解决方法: 最开始

一起学android之利用回调函数onCreateDialog实现加载对话框(23)

效果图: 有时候我们需要去做一个Activity启动时的数据加载对话框,关于对话框的各种实现可以通过一起学android之对话框 Dialog的创建(7)来完成,在这里另外介绍一个,利用onCreateDialog回调方法来实现,当然这个方法标记已经过 时了,但我们还是可以使用这个方法来实现我们想要的功能.具体请参看代码: public class MainActivity extends Activity { @SuppressWarnings("deprecation") @Ove

从零开始学android&lt;android事件的处理方式.二十四.&gt;

在android中一共有 多种事件,每种事件都有自己相对应的处理机制 如以下几种 1 单击事件 View.OnClickListener public abstract void onClick (View v) 单击组件时触发 2 单击事件 View.OnLongClickListener public abstract boolean onLongClick (View v) 长按组件时触发 3 键盘事件 View.OnKeyListener public abstract boolean