本文转载自: https://www.cnblogs.com/hibraincol/archive/2010/09/30/1839014.html 作者:hibraincol 转载请注明该声明。

概述:

Android 的上下文菜单类似于 PC 上的右键菜单。当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单。任何视图都可以注册上下文菜单,不过,最常见的是用于列表视图ListView的item。

注意:Android 的上下文菜单不支持图标或快捷键。

创建一个上下文菜单的步骤:

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

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

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

示例:

MainActivity.java 文件:

//file name: MainActivity.java
package hi.braincol.local.contextMenu;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.util.Log;
public class MainActivity extends ListActivity {
    
    private static final int ITEM1 = Menu.FIRST;
    private static final int ITEM2 = Menu.FIRST+1;
    private static final int ITEM3 = Menu.FIRST+2;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);   
        showListView();
        
        //为 ListView 的所有 item 注册 ContextMenu
        registerForContextMenu(getListView());
        //这里的registerForContextMenu()也可以用下面的语句替代
        //getListView().setOnCreateContextMenuListener(this);
    }
    
    private void showListView(){
        String[] mString = new String[]{
                "路飞-Monkey D Luffy", 
                "奈美-Nami", 
                "卓洛-Zoro",
                "山治-Sanji", 
                "尼可·罗宾-Ms. All Sunday", 
                "乌索普-usoppu", 
                "托尼托尼·乔巴-Tony Tony Chopper",
        };
        ArrayAdapter<String> mla = new ArrayAdapter<String>(MainActivity.this, 
                R.layout.main, mString);
        MainActivity.this.setListAdapter(mla);      
    }
    
    //上下文菜单,本例会通过长按条目激活上下文菜单
    @Override
    public void onCreateContextMenu(ContextMenu menu, View view, 
            ContextMenuInfo menuInfo) {
        menu.setHeaderTitle("人物简介");
        //添加菜单项
        menu.add(0, ITEM1, 0, "特长");
        menu.add(0, ITEM2, 0, "战斗力");
        menu.add(0, ITEM3, 0, "经典语录");
    }
    
    //菜单单击响应
    @Override
    public boolean onContextItemSelected(MenuItem item){
        //获取当前被选择的菜单项的信息
        //AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
        //Log.i("braincol",String.valueOf(info.id));        
        switch(item.getItemId()){
        case ITEM1:
            //在这里添加处理代码
            
            break;
        case ITEM2:
            //在这里添加处理代码
            
            break;    
        case ITEM3:
            //在这里添加处理代码
            
            break;
        }
        return true;
    }
    
}

main.xml 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns: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 的上下文菜单: Context Menu相关推荐

  1. 5.4 Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())

    Android 的上下文菜单: Context Menu,registerForContextMenu(getListView()) Android 的上下文菜单类似于 PC 上的右键菜单.当为一个视 ...

  2. Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())

    概述: Android 的上下文菜单类似于 PC 上的右键菜单.当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单.任何视图都可以注册上下文菜单,不过, ...

  3. 学习之路(一)Android 的上下文菜单: Context Menu,registerForContextMenu(getListView());

    概述: Android 的上下文菜单类似于 PC 上的右键菜单.当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单.任何视图都可以注册上下文菜单,不过, ...

  4. 上下文菜单Context Menu

    Android的上下文菜单在概念上和PC软件的右键菜单类似.当一个视图注册到一个上下文菜单时,执行一个在该对象上的"长按"(按住不动差不多两秒钟)动作,将出现一个提供相关功能的浮动 ...

  5. Android 中实现上下文菜单(Context menu)详解

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

  6. android 使用上下文菜单ContextMenu

    Android 的上下文菜单类似于 PC 上的右键菜单.当为一个视图注册了上下文菜单之后,长按这个视图对象就会弹出一个浮动菜单,即上下文菜单.任何视图都可以注册上下文菜单,不过,最常见的是用于列表视图 ...

  7. Android 三种菜单(Menu)的实现

    一.常用方法 onCreateOptionsMenu(Menu menu) 每次Activity一创建就会执行,一般只执行一次,创建并保留Menu的实例: //获取MenuInflaterMenuIn ...

  8. (4.0.15.3)Android 的上下文菜单: ContextMenu的使用方法以及与OptionMenu的区别

    ContextMenu是Android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有"cut" ...

  9. android 关闭上下文菜单,【Android笔记】ContextMenu上下文菜单

    ContextMenu上下文菜单 1.ContextMenu菜单的组成部分 标题及标题图标 菜单内容 菜单内容的点击响应事件 2.ContextMenu与OptionMenu的区别 OptionMen ...

最新文章

  1. 使用Wisdom RESTClient如何在Linux和Mac上获取测试报告和API文档?
  2. app里使用163邮箱发送邮件,被163认为是垃圾邮件的坑爹经历!_ !
  3. 《Effective C#》Item 15:利用using和try-finally来释放资源
  4. mysql和SQLYog工具使用
  5. python中是干嘛的-python是做什么的,新手必看哦!
  6. maven + bat 实现快速编译打包模块代码
  7. PHP几个快速读取大文件例子
  8. ubuntu 下安装 cudnn
  9. CF1016G. Appropriate Team(Pollard-pho,FWT,数论)
  10. 最通俗易懂的乐观锁与悲观锁原理及实现
  11. 关于Linux下载工具
  12. 记录点滴——2020年终总结
  13. [1007]魔法少女小Scarlet(洛谷 P4924)
  14. ESP32-WiFi功能的理解
  15. Undertow文件上传10M以上抛异常UT000020: Connection terminated as request was larger than 10485760
  16. python基础知识之整除、取余、幂运算
  17. 升级 QPython OH 内核至 Python 3.9
  18. 本地HTML访问REST服务的实现
  19. 爱情降临的时刻你在等待着
  20. mysql时间范围查询 索引无效

热门文章

  1. 记录断舍离,极简生活的开始
  2. Java奥赛罗游戏,奥赛罗冒险2游戏
  3. css段落首字母下沉
  4. LSTM模型---情感分析(文本评价分类)
  5. sql中的列变行、行变列操作
  6. 2.有霍尔传感器BLDC换向原理
  7. steam/csgo搬砖项目安全吗?什么是桌面sda令牌?红信如何解决?
  8. 内存空间为什么要分栈和堆?
  9. 安装centos7 如何分区
  10. 采购-采购申请APP-PO-14082,PO借记账户为必备项,但无法确定。