1.可在activity和fragment中使用。
2.使用方法
(1)注册
registerForContextMenu(btn);//btn是要实现交互的控件
(2)重写onCreateContextMenu方法和onContextItemSelected方法(有两种方式先讲第一种)
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.menu,menu); //给menu设置布局文件,当触发时显示在界面上
}
@Override public boolean onContextItemSelected(MenuItem item) { //布局文件里面对应的id,当点击时,根据id区别那个被点击 switch(item.getItemId()){ caseR.id.text1: Log.i("leilei","text1"); break; caseR.id.text2: Log.i("leilei","text2"); break; caseR.id.text3: Log.i("leilei","text3"); break;
}
returnsuper.onOptionsItemSelected(item);
}
(3)触发条件(1 调用方法 view.showContextMenu(),2 长按(可以和长按事件setOnLongClickListener同时触发)。
//调用方法方式 btn.setOnClickListener(newView.OnClickListener() { @Override public void onClick(View v) { v.showContextMenu();//单击直接显示Context菜单 } });
在讲讲第二种方式(ContextMenu 方法)
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
// TODOAuto-generated method stub
menu.setHeaderIcon(R.drawable.tp_3);
menu.setHeaderTitle(R.string.menuHeader01);
menu.add(, , , R.string.conTextMenu01);
menu.add(, , , R.string.conTextMenu02);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item){
String str = "";
switch(item.getItemId()){
case 20:
str = "20";
break;
case 21:
str = "21";
break;
}
Toast.makeText(getApplicationContext(),str, Toast.LENGTH_LONG).show();
return true;
}
这种是用原生的进行菜单填充
menu.add(20, 20, 20, R.string.conTextMenu01);
参数1:小组的标记;
参数2:给他设置一个ID ;
参数3:怎么显示位置(0,1);
参数4:文字的显示
(4)总结
1.registerForContextMenu方法:用于为一个View对象注册上下文菜单,其输入为View对象
2.onCreateContextMenu方法:初始化上下文菜单,在需要相应上下文菜单时调用
3.onContextItemSelected方法:设置上下文中某个菜单被选中时的操作
4.onContextMenuClosed方法:用于设置当前上下文菜单被关闭时的操作,其输入为menu对象
by:leileitua