Android之ContextMenu的使用方法以及与OptionMenu的区别
来源:互联网 发布:安卓windows桌面主题 编辑:程序博客网 时间:2024/06/06 04:34
>> ContextMenu是android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来。比如EditeText就可以通过长按来弹出拥有“cut”,"copy","paste"等项的
实现ContextMenu,一般要用到以下三个方法:
(1)registerForContextMenu(getExpandableListView());
(2)onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo);
(3)onContextItemSelected(MenuItem item);
尽管上下文菜单的拥有者是View,生成上下文菜单却是通过Activity中的onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo)方法,该方法很像生成Options Menu的onCreateOptionsMenu(Menu menu)方法。两者的不同在于,onCreateOptionsMenu只在用户第一次按“Menu”键时被调用,而onCreateContextMenu会在用户每一次长按View时被调用,而且View必须已经注册了上下文菜单。
另一个值得注意的就是上图中的ContextMenuInfo,该类的对象被传入onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo)方法,那么它有什么用呢?有时候,视图元素需要向上下文菜单传递一些信息,比如该View对应DB记录的ID等,这就要使用ContextMenuInfo。需要传递额外信息的View需要重写getContextMenuInfo()方法,返回一个带有数据的ContextMenuInfo实现类对象。
介绍了这么多,下面给出一个demo演示如何创建和响应上下文菜单:
1.在activity的onCreate(...)方法中为一个view注册上下文菜单
2.在onCreateContextMenuInfo(...)中生成上下文菜单。
3.在onContextItemSelected(...)中响应上下文菜单项。
菜单
1)注册上下文菜单
/**
* 上下文菜单演示Demo
*
* @author CodingMyWorld 2011-8-27 下午03:22:39
*/
publicclass SampleContextMenuActivity extends ListActivity {
privatestaticfinal String TAG ="SampleContextMenuActivity";
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 显示列表
simpleShowList();
// 为所有列表项注册上下文菜单
this.registerForContextMenu(getListView());
}
privatevoid simpleShowList() {
// list item
String[] files =new String[] {
"文件1",
"文件2",
"文件3",
"文件4"
};
// simple array adapter
ArrayAdapter<String> adapter =new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
files);
// set adapter
this.setListAdapter(adapter);
Log.v(TAG, "show simple list");
}
}
2)生成上下文菜单
在activity中重写方法。
@Override
publicvoid onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
Log.v(TAG, "populate context menu");
// set context menu title
menu.setHeaderTitle("文件操作");
// add context menu item
menu.add(0, 1, Menu.NONE, "发送");
menu.add(0, 2, Menu.NONE, "标记为重要");
menu.add(0, 3, Menu.NONE, "重命名");
menu.add(0, 4, Menu.NONE, "删除");
}
3)响应上下文菜单项
与响应options menu类似,唯一的不同是可以通过menu info获得额外的信息。
@Override
publicboolean onContextItemSelected(MenuItem item) {
// 得到当前被选中的item信息
AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
Log.v(TAG, "context item seleted ID="+ menuInfo.id);
switch(item.getItemId()) {
case1:
// do something
break;
case2:
// do something
break;
case3:
// do something
break;
case4:
// do something
break;
default:
returnsuper.onContextItemSelected(item);
}
returntrue;
}
运行程序,多次唤出上下文菜单,注意LogCat的输出,onCreateContextMenu每一次都被调用了。
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- (4.1.1.3)Android 的上下文菜单: ContextMenu的使用方法以及与OptionMenu的区别
- Android中ContextMenu的使用方法
- 关于OptionMenu和ContextMenu的实现
- android应用开发详解(四)----------各种菜单(optionmenu、contextmenu、submenu)和Toast的使用
- Android系统五种常用的 Menu!OptionMenu/ContextMenu/Actionbar/Contextual aciton mode/popup menu
- android简单实例--------普通菜单optionMenu,上下文菜单ContextMenu,弹出式菜单的使用PopuMenu(一)
- android简单实例--------普通菜单optionMenu,上下文菜单ContextMenu,弹出式菜单的使用PopuMenu(二)
- android简单实例--------普通菜单optionMenu,上下文菜单ContextMenu,弹出式菜单的使用PopuMenu(三)
- Android之OptionMenu菜单的使用
- contextMenu和OPtionMenu的点击事件同时相应问题
- android -- ContextMenu 的使用 和 OptionsMenu 区别
- android中OptionMenu和ContextMenu创建
- 【Android】ContextMenu与SimpleAdapter的应用示例
- 知道先序和中序,求后序以及层次遍历
- Markdown中插入数学公式的方法
- Qt Model/View 学习笔记 (三)
- C++学习笔记
- 【读书笔记】【收获,不止Oracle】不同连接类型表下,驱动顺序对查询性能的影响
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- 金庸武侠小说之我的见解
- LeetCode—***寻找二叉树中任意两个节点之间的最大值Binary Tree Maximum Path Sum
- poj2373 灌溉草场
- linux上编译mongodb c++ 客户端sdk
- Qt Model/View 学习笔记 (四)
- UVa10803_Thunder Mountain(最短路)(小白书图论专题)
- 单向链表的操作
- 实例学习gcc+gdb+make