`
从此醉
  • 浏览: 1041242 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

Android用户界面菜单之上下文菜单(Context Menu)

 
阅读更多

Android系统为我们提供了丰富的可视化用户界面组件,包括菜单、对话框、按钮、下拉列表等。Android系统借用了Java里的UI设计思想,包括事件响应机制和布局管理。Android系统中的所有UI类都是建立在View和ViewGroup这两个类的基础之上。所有的View的子类称为“Widge”,所有ViewGroup的子类称为“Layout”。View和ViewGroup之间采用了组合设计模式(Composite),可以使得“部分-整体”同等对待。ViewGroup作为布局容器类在最上层,布局容器里面又可以有View和ViewGroup。

菜单的设计在人机交互中可以说是非常人性化的,它提供了不同功能分组展示的能力。Android中菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu)。 下面我们继续上一篇,讲解上下文菜单:

当用户长时间按键不放时,弹出的菜单时上下文菜单。我们经常在Windows中用鼠标右键单击弹出的菜单就是上下文菜单。创建过程如下:

1、覆盖Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项(MenuItem)。

2、覆盖onContextItemSelected()方法,相应菜单单击事件。

3、调用registerForContextMenu()方法,为试图注册上下文菜单。

案例:

package com.xiaomo.ui;

import com.example.helloworld.R;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.TextView;

public class Context_Menu extends Activity {

	private static final int ITEM1 = Menu.FIRST;
	private static final int ITEM2 = Menu.FIRST+1;
	private static final int ITEM3 = Menu.FIRST+2;
	
	private TextView myTextView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		myTextView = (TextView)findViewById(R.id.main_text);
		//注册上下文菜单
		registerForContextMenu(myTextView);
	}
	
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		//添加菜单项
		menu.add(0,ITEM1,0,"红色背景");
		menu.add(0, ITEM2, 0, "绿色背景");
		menu.add(0,ITEM3,0,"白色背景");
	}
	
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		//菜单项1被选择
		case ITEM1:
			//设置TextView背景色
			myTextView.setBackgroundColor(Color.RED);
			break;
		case ITEM2:
			myTextView.setBackgroundColor(Color.GREEN);
			break;
		case ITEM3:
			myTextView.setBackgroundColor(Color.WHITE);
			break;
		}
		return true;
	}
	
}


出处:http://blog.csdn.net/cl05300629/article/details/17961231 作者:伫望碧落

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics