5.4 Android(安卓)的上下文菜单: Context Menu,registerForContextMenu(getListView())
16lz
2021-12-04
Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())
Android 的上下文菜单类似于 PC 上的右键菜单。当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单。任何视图都可以注册上下文菜单,不过,最常见的是用于列表视图ListView的item。
注意:Android 的上下文菜单不支持图标或快捷键。
创建一个上下文菜单的步骤:
1. 覆盖 Activity 的 onCreateContenxtMenu() 方法,调用 Menu 的 add 方法添加菜单项(MenuItem)。
2. 覆盖 Activity 的 onContextItemSelected() 方法,响应上下文菜单菜单项的单击事件。
3. 调用 registerForContextMenu() 方法,为视图注册上下文菜单。
示例:
MainActivity.java 文件:
- //filename:MainActivity.java
- packagehi.braincol.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(安卓)Configuration属性解析
- Android(安卓)重点知识回顾
- [置顶] android 批量插入数据
- Android菜单操作之创建并响应菜单
- Android(安卓)Studio IDEA:基于IDEA的安卓开发环境
- Android学习笔记之MENU
- android菜单详解六:快捷键和菜单intent
- Android(安卓)Menu
- android studio开发安卓应用设置版本号