android ContextMenu 长按菜单 整理 摘
来源:互联网 发布:皇族white淘宝店 编辑:程序博客网 时间:2024/06/02 21:19
listview 的条目长按出菜单
一。前提概念
单级目录的list 长按菜单
AdapterView.AdapterContextMenuInfo
int i = ((AdapterContextMenuInfo)menuInfo).position;
menu.setHeaderTitle(messages.get(i).toString()).setHeaderIcon(
R.drawable.icon);
多级目录的ExpandableList 长按选择菜单 :
ExpandableListView.ExpandableListContextMenuInfo
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo;
String title = ((TextView) info.targetView
.findViewById(R.id.chatting_name_tv)).getText().toString();
Drawable icon = ((ImageView) info.targetView
.findViewById(R.id.contactIcon)).getDrawable();
long position = info.packedPosition;
2.注册 菜单 :
1.registerForContextMenu(chatHistoryLv);
2.// chatHistoryLv.setOnCreateContextMenuListener(this);
还可以 单级 如果 class extends ListActivity :
registerForContextMenu(getListView());
多级 如果 class extends ExpandableListView:
registerForContextMenu(getExpandableListView());
1.同2 只是把2封装在源代码里 可点源代码看
(与1对应还可以 不用的时候注销注册 菜单 :unRegisterForContextMenu(chatHistoryLv);或.setOnCreateContextMenuListener(null);
3.注册菜单事件 :
1.直接建事件在 新建那里:
chatHistoryLv.setOnCreateContextMenuListener(
new OnCreateContextMenuListener() {
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
Log.i(TAG, "chatHistoryLv.setOnCreateContextMenuListener");
// TODO Auto-generated method stub
menu.setHeaderTitle("长按按钮-ContextMenu");
menu.add(0,0,0,"弹出长按钮菜单子菜单1");
menu.add(0,0,0,"弹出长按钮菜单子菜单2");
}
});
2.在外面构:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
System.out.println("SmsRoom-----oncreateContextMenu");
Log.d(TAG, "onCreateContextMenu");
/*
* one 多级菜单
*/
// Log.i(TAG,"menuInfo.toString==="+menuInfo.toString());
// ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo;
//
// String title = ((TextView) info.targetView
// .findViewById(R.id.chatting_name_tv)).getText().toString();
// // Drawable icon = ((ImageView) info.targetView
// // .findViewById(R.id.contactIcon)).getDrawable();
//
// long position = info.packedPosition;
/*
* two 单级菜单
*/
int i = ((AdapterContextMenuInfo)menuInfo).position;
menu.setHeaderTitle(messages.get(i).toString()).setHeaderIcon(
R.drawable.icon);
menu.add(0, MENU_MSG_EDIT, 0,
this.getResources().getString(R.string.menu_edit));
menu.add(0, MENU_MSG_COPY, 0,
this.getResources().getString(R.string.menu_copy));
menu.add(0, MENU_MSG_DELETE, 0,
this.getResources().getString(R.string.menu_delete));
menu.add(0, MENU_MSG_MOVE, 0,
this.getResources().getString(R.string.menu_intransit));
}
4.写菜单里面的条目事件 :
1.单级菜单:
@Override
public boolean onContextItemSelected(MenuItem item) {
Log.d(TAG, "clickContextMenu");
setTitle("点击了长按菜单里面的第" + item.getItemId() + "个项目");
return super.onContextItemSelected(item);
}
2.多级菜单:
@Override
public boolean onContextItemSelected(MenuItem item) {
boolean flag = false;
// TODO Auto-generated method stub
ExpandableListContextMenuInfo menuInfo = (ExpandableListContextMenuInfo) item
.getMenuInfo();
/*
*
*/
String title = ((TextView) menuInfo.targetView).getText().toString();
int type = ExpandableListView
.getPackedPositionType(menuInfo.packedPosition);
if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
int groupPos = ExpandableListView
.getPackedPositionGroup(menuInfo.packedPosition);
int childPos = ExpandableListView
.getPackedPositionChild(menuInfo.packedPosition);
CharSequence str = "您单击了" + title;
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
Log.d(TAG, "Run Hereing...");
flag = true;
}
else {
if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
int groupPos = ExpandableListView
.getPackedPositionGroup(menuInfo.packedPosition);
CharSequence cs = "您单击了" + title;
Toast.makeText(this, cs, Toast.LENGTH_SHORT).show();
Log.d(TAG, "Run Here...");
flag = true;
}
}
return flag;
}
5.若还要实现 上级 listview条目的长按
则要让长按事件.setOnItemLongClickListener 返回false 才能 让获焦事件 扔到setOnCreateContextMenuListener 菜单兼听事件这层
7.注销 菜单事件:
1.unregisterForContextMenu(view);
2.view.setOnCreateContextMenuListener(null);
<1.2 相同 源代码中:
public void unregisterForContextMenu(View view) {
view.setOnCreateContextMenuListener(null);
}>
-----------------------------------注 :
在Android的菜单分两种:options menu 、context menu 。(也有分三种的:options menu 、context menu、sub menu)
其中options menu是和Activity相关联的,context menu 是和View关联。
---------------------------------------------
1.this.registerForContextMenu(getListView());
getListView());
这个 用在 class AActivity extends ListActivity
registerForContextMenu(getExpandableListView());
getExpandableListView();
这个 用在 class extends ExpandableListActivity
- android ContextMenu 长按菜单 整理 摘
- Android--长按菜单--ContextMenu
- 【长按菜单】contextMenu
- ListView:长按弹出上下文菜单(ContextMenu)
- android listview 长按弹出菜单--ContextMenu并进行删除操作
- Android 长按弹出菜单选项:ContextMenu(长按弹出标记消息、消息置顶、删除消息)
- android---ContextMenu操作(长按listview)
- ListView单击和长按弹出上下文菜单(ContextMenu)
- Android--ContextMenu上下文菜单
- 【Android】上下文菜单contextMenu
- Android上下文菜单 ContextMenu
- Android-ContextMenu上下文菜单
- Android menu菜单 ContextMenu
- 【Android】上下文菜单contextMenu
- Android ContextMenu 上下文菜单
- 12. android ContextMenu 上下文菜单
- Android 之ContextMenu上下文菜单
- android 使用上下文菜单ContextMenu
- 结构体成员的内存对齐
- 纠结的我
- 乐phone不用刷机拿root的方法
- Eclipse C/S系统结合Hibernate 3实例开发分享
- 开源电子商务OFBIZ:商品分类与管理(三)
- android ContextMenu 长按菜单 整理 摘
- 006.openJTAG的使用
- 广州 《软件测试安全实战训练》圆满结束!
- jQuery 文档操作方法
- Android 中关于Cursor类的介绍
- 问题集
- 3g modem调试
- nmap端口扫描器参数详解
- CSS教程:彻底掌握Z-index属性