Android ContextMenu即上下文菜单,类似于PC上的右键菜单,用于快捷操作. 当一个试图注册到ContextMenu时,在当前视图上长按(大概两秒钟) ,将会弹出一个相关功能的菜单。任何视图都可以注册ContextMenu.

PS:ContextMenu貌似不支持icon和快捷键,反正我不是不知道怎么搞出来。有知道的大侠麻烦告知一声。

Activity中注册ContextMenu

class TextActivity extends Activity

{

My View mView = null;

onCreate(Bundle bundle)

{

...

mView = (MyView)findViewById(R.id.viewid);

registerForContextMenu(mView); /*注册到ContextMenu*/

...

}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub

//添加相应的菜单项

menu.add(0,Menu.FIRST, 0, "item1");
menu.add(0,Menu.FIRST + 1, 0, "item2");

super.onCreateContextMenu(menu, v, menuInfo);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub

//某项ContextMenu的item被选择时

if(item.getItemId() == Menu.FIRST)
{
//item1被选择时,

doSomething();
}
return super.onContextItemSelected(item);
}

@Override
public void onContextMenuClosed(Menu menu) {
// TODO Auto-generated method stub

//当ContextMenu关闭时被调用,如果有必要可以进行某些操作
super.onContextMenuClosed(menu);
}

}

Activity因为已经implements OnCreateContextMenuListener;所以在Activity中的任何一个视图都可以按照上述步骤实现ContextMenu的相关操作

View 中实现ContextMenu ,可以直接继承onCreateContextMenuListener,也可以直接new 一个onCreateContextMenuListener

1. 继承onCreateContextMenuListener

class MyView extends View implements OnCreateContextMenuListener

{

public void onResume()

{

...
setOnCreateContextMenuListener(this);

....

}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
menu.add(0, MENU_READ, 0, R.string.menu_item1).setOnMenuItemClickListener(mMenuItemClicked);
menu.add(0, MENU_UNREAD, 0, R.string.menu_item2).setOnMenuItemClickListener(mMenuItemClicked);

}

}

2. new onCreateContextMenuListener

class MyView extends View implements OnCreateContextMenuListener

{

public void onResume()

{

...
setOnCreateContextMenuListener(contextMenuListener );

....

}

private OnCreateContextMenuListener contextMenuListener = new OnCreateContextMenuListener(){ @Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
menu.add(0, MENU_READ, 0, R.string.menu_item1).setOnMenuItemClickListener(mMenuItemClicked);
menu.add(0, MENU_UNREAD, 0, R.string.menu_item2).setOnMenuItemClickListener(mMenuItemClicked);

}

}

另外:由于系统对某些视图已经定义了某些ContextMenu,因此在自己添加ContextMenu时,并不会影响到系统的注册的ContextMenu,系统会自行将两个Menu的item进行合并再进行显示。

更多相关文章

  1. Android(安卓)Data Binding 技术
  2. 家庭版记账本app进度之关于android界面布局的相关学习
  3. Toast——多次点击只显示一次解决方案
  4. [Androidstudio]的坑之继承ListActivity
  5. 【技术直通车】ArcGIS for Android地图控件的5大常见操作
  6. Android判断当前线程是否是主线程的方法
  7. 浅析 - Android(安卓)ContentProvider用法示例
  8. 使用Android(安卓)Studio为系统级的app签名
  9. getevent工具和Android中inputevent的分析

随机推荐

  1. MySQL 8忘记密码的最佳处理方式浅析
  2. MySQL主从延迟现象及原理分析详解
  3. mysql 8.0.13手动安装教程
  4. MySQL中无过滤条件的count详解
  5. MySQL中int最大值深入讲解
  6. Mysql主键和唯一键的区别点总结
  7. MySQL按时间统计数据的方法总结
  8. 实例讲解MySQL中乐观锁和悲观锁
  9. SQL和NoSQL之间的区别总结
  10. mysql蠕虫复制基础知识点