/*
* 上下文菜单(ContextMenu)
* 上下文菜单和开发选项菜单的方法基本想似,开发上下文菜单和开发选项菜单的区别在于:
* 开发上下文菜单不是重写onCreateOptionMunu(Menu menu)方法,而是重写
*onCreateContextMenu(ContextMenu menu, View source,ContextMenu.ContextMenuIfo menuInfo)
* 方法,而其中的source参数代表上下文菜单的组件
* 开发上下文菜单步骤如下:
* 1.重写Activity的onCreateContextMenu(ContextMenu menu, View source,ContextMenu.ContextMenuIfo menuInfo)方法
* 2.调用Activity的registerFouContextMenu(View view)方法为 view组件注册上下文菜单
* 3.如果希望应用程序能为菜单提供响应,可以考虑重写 onContextItemSelected(MenuItem mi)方法
*/
import 略
* 上下文菜单(ContextMenu)
* 上下文菜单和开发选项菜单的方法基本想似,开发上下文菜单和开发选项菜单的区别在于:
* 开发上下文菜单不是重写onCreateOptionMunu(Menu menu)方法,而是重写
*onCreateContextMenu(ContextMenu menu, View source,ContextMenu.ContextMenuIfo menuInfo)
* 方法,而其中的source参数代表上下文菜单的组件
* 开发上下文菜单步骤如下:
* 1.重写Activity的onCreateContextMenu(ContextMenu menu, View source,ContextMenu.ContextMenuIfo menuInfo)方法
* 2.调用Activity的registerFouContextMenu(View view)方法为 view组件注册上下文菜单
* 3.如果希望应用程序能为菜单提供响应,可以考虑重写 onContextItemSelected(MenuItem mi)方法
*/
import 略
public class Ex002_15Activity extends Activity {
// 为每个菜单定义标识
final int MENU1 = 0x111;
final int MENU2 = 0x112;
final int MENU3 = 0x113;
final int MENU4 = 0x114;
private TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (Button) findViewById(R.id.button1);
// 为按钮注册上下文菜单
registerForContextMenu(tv);
}
// 每次创建上下文菜单时都会触发该事件
public void onCreateContextMenu(ContextMenu menu, View source,
ContextMenuInfo menuInfo) {
menu.add(0, MENU1, 0, "红色");
menu.add(0, MENU2, 0, "绿色");
menu.add(0, MENU3, 0, "蓝色");
// 将三个菜单设置成单选菜单项
menu.setGroupCheckable(0, true, true);
// 设置菜单的标题和图标
menu.setHeaderTitle("选择背景颜色").setHeaderIcon(R.drawable.tools);
}
// 菜单项被单击时触发的事件
public boolean onContextItemSelected(MenuItem mi) {
switch (mi.getItemId()) {
case MENU1:
mi.setCheckable(true);
tv.setTextColor(Color.RED);
break;
case MENU2:
mi.setCheckable(true);
tv.setTextColor(Color.GREEN);
break;
case MENU3:
mi.setCheckable(true);
tv.setTextColor(Color.BLUE);
break;
default:
tv.setTextColor(Color.WHITE);
}
return true;
}
}
下面我们来看下运行后的结果:

总结:上面的程序中我们调用了registerForContextMenu(tv)为tv组件注册了上下文菜单,这意味
着只要用户长按该组件时就会显示该上下文菜单。
需要指出的是,实际上Android提供了两种创建菜单的方式,一种是在Java代码中创建,一种是
使用XML文件来定义菜单,这种方式可以提供更好的解耦..........我将在后续的文章中写如和用xml
文件定义菜单,请继续关注............thanks!!!
本文介绍如何在Android应用中实现上下文菜单功能,包括通过Java代码注册和创建上下文菜单,以及如何为菜单项添加点击事件以改变视图的颜色。
1808

被折叠的 条评论
为什么被折叠?



