您的位置:首页 > 移动开发 > Android开发

Android 上下文菜单实现

2011-05-10 09:54 197 查看
首先解释一下什么是上下文菜单,Android中上下文菜单就是ContextMenu。他的效果就像是PC机上的鼠标右键,当为一个视图注册了上下文菜
单之后,长按(2秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单。任何视图都可以注册上下文菜单,不过,最常见的是用于列表视图
ListView的item。








  下面讲讲实现过程:

  1.覆盖Activity的onCreateContenxtMenu()方法,调用Menu的add方法添加菜单项(MenuItem)。

  2.覆盖Activity的onContextItemSelected()方法,响应上下文菜单菜单项的单击事件。

  3.调用registerForContextMenu()方法,为视图注册上下文菜单。

  

  JAVA代码:

  packageEOE.local.contextMenu;

  

  importandroid.app.ListActivity;

  importandroid.os.Bundle;

  importandroid.view.ContextMenu;

  importandroid.view.Menu;

  importandroid.view.MenuItem;

  importandroid.view.ContextMenu.ContextMenuInfo;

  importandroid.view.View;

  importandroid.widget.AdapterView.AdapterContextMenuInfo;

  importandroid.widget.ArrayAdapter;

  importandroid.util.Log;

  

  publicclassMainActivityextendsListActivity{

  

  privatestaticfinalintITEM1=Menu.FIRST;

  

  privatestaticfinalintITEM2=Menu.FIRST+1;

  

  privatestaticfinalintITEM3=Menu.FIRST+2;

  

  

  

  /**Calledwhentheactivityisfirstcreated.*/

  

  @Override

  publicvoidonCreate(BundlesavedInstanceState){

  

  super.onCreate(savedInstanceState);

  

  showListView();

  

  

  //为ListView的所有item注册ContextMenu

  

  registerForContextMenu(getListView());

  

  //这里的registerForContextMenu()也可以用下面的语句替代

  

  //getListView().setOnCreateContextMenuListener(this);

  

  }

  

  

  

  privatevoidshowListView(){

  

  String[]mString=newString[]{

  

  "路飞-MonkeyDLuffy",

  "奈美-Nami",

  "卓洛-Zoro",

  "山治-Sanji",

  "尼可·罗宾-Ms.AllSunday",

  "乌索普-usoppu",

  "托尼托尼·乔巴-TonyTonyChopper",

  

  };

  

  ArrayAdapter<String>mla=newArrayAdapter<String>(MainActivity.this,

  

  R.layout.main,mString);

  

  MainActivity.this.setListAdapter(mla);

  

  }

  

  

  //上下文菜单,本例会通过长按条目激活上下文菜单

  @Override

  publicvoidonCreateContextMenu(ContextMenumenu,Viewview,

  

  ContextMenuInfomenuInfo){

  

  menu.setHeaderTitle("人物简介");

  

  //添加菜单项

  menu.add(0,ITEM1,0,"特长");

  

  menu.add(0,ITEM2,0,"战斗力");

  

  menu.add(0,ITEM3,0,"经典语录");

  

  }

  

  

  

  //菜单单击响应

  @Override

  publicbooleanonContextItemSelected(MenuItemitem){

  

  //获取当前被选择的菜单项的信息

  

  //AdapterContextMenuInfoinfo=(AdapterContextMenuInfo)item.getMenuInfo();

  

  //Log.i("braincol",String.valueOf(info.id));

  

  switch(item.getItemId()){

  

  caseITEM1:

  

  //在这里添加处理代码

  

  break;

  

  

  

  caseITEM2:

  

  //在这里添加处理代码

  break;

  

  

  

  caseITEM3:

  

  //在这里添加处理代码

  break;

  

  }

  

  returntrue;

  

  }

  

  

  }

  main.xml布局文件:

  

    <?xmlversion="1.0"encoding="utf-8"?>

  

  <TextViewxmlns:android="http://schemas.android.com/apk/res/android
"

  

  android:id="@+id/myTextView"

  android:textSize="20sp"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:text="@string/hello"

  

  />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: