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"
/>
单之后,长按(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"
/>
相关文章推荐
- Android入门(45)——第七章 使用ContextMenu实现上下文菜单
- Android 上下文菜单实现
- 【Android】菜单功能的实现:上下文菜单
- Android 上下文菜单实现 context Menu
- Android创建浮动的上下文菜单,实现微信通讯录列表长按弹出菜单项功能
- Android 上下文菜单实现
- android 开发-(Contextual Menu)上下文菜单的实现
- 不得不吐槽的Android PopupWindow的几个痛点(实现带箭头的上下文菜单遇到的坑)
- Android组件实现长按弹出上下文菜单功能的方法
- Android子菜单和选项菜单与上下文菜单的实现
- Android子菜单和选项菜单与上下文菜单的实现
- Android成长日记-ContextMenu实现上下文菜单
- Android编程实现为ListView创建上下文菜单(ContextMenu)的方法
- 【Android 基础】Animation 动画介绍和实现
- Android----实现短信发送器功能
- 【微信公众平台】微信公众号“一键关注”Android版实现
- Android自定义控件系列八:详解onMeasure()(二)--利用onMeasure测量来实现图片拉伸永不变形,解决屏幕适配问题
- Android开发 调用照相机实现代码和注意事项
- Android消息推送(二)--基于MQTT协议实现的推送功能
- 实现简单的android UI界面