ContextMenu的使用具体解释

二话不说,先上图:

能够非常easy看到这是一个类似于Dialog悬浮在活动上的控件,它是由被注冊的view长按所触发的。

当然啦,也有其它的实现方式,这里就先介绍一下系统的ContextMenu:(先剧透一下,使用方式和Menu是一样的)

Step1:

this.registerForContextMenu(listView);

在onCreate里为listView注冊ContextMenu。

Step2:

覆写onCreateContextMenu来初始化。这里被打上凝视的是动态载入menuItem,静态载入和OptionsMenu是一样的

@Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);//上下文菜单的呼出每一次都会被调用
       /* menu.setHeaderTitle("文件操作");
        menu.add(0, 1, Menu.NONE, "发送");//第一个是组别。第二个是数字是该组里的条目序号
        menu.add(0, 2,Menu.NONE, "删除");*///静态加入菜单项
        getMenuInflater().inflate(R.menu.menu_main, menu);//资源id易于管理,google推荐
    }

Step3:

覆写onContextItemSelected,监听菜单点击事件

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        //获取到的是listView里的条目信息
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

        switch (item.getItemId()) {
            case R.id.mi1:
                Toast.makeText(this, "已发送" + info.id, Toast.LENGTH_SHORT).show();
                break;
            case R.id.mi2:
                Toast.makeText(this, "正在删除" + info.id, Toast.LENGTH_SHORT).show();
                break;
            default:
                return super.onContextItemSelected(item);
        }
        return true;
    }

当中我们能够通过item.getMenuInfo来获取item所相应的ListView里条目的信息,当中info.id即就是listView里的position

Step4:

去res/menu/xxx.xml里静态构建菜单,当然啦,动态的话是不须要这一步的

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <group android:id="@+id/group1">
        <item android:id="@+id/mi1"
            android:title="发送">
            <!--ContextMenu的嵌套。点击进去之后又是一个ContextMenu-->
            <menu>
                <item android:id="@+id/mi_display_setting"
                    android:title="发送邮件"
                    android:icon="@mipmap/ic_launcher"
                    />
                <item android:id="@+id/mi_network_setting"
                    android:title="发送短信"/>
                <!-- 别的菜单项 -->
            </menu>
        </item>

        <item android:id="@+id/mi2"
            android:title="删除"/>
    </group>
</menu>

***********有一个问题就是我临时还没发现改动ContextMenu窗口的大小风格,知道的博友还请不吝赐教***********

demo地址

时间: 2024-12-17 07:46:20

ContextMenu的使用具体解释的相关文章

FCKeditor插件 中文解释

AutoDetectLanguage=true/false 自动检测语言 BaseHref="" 相对链接的基地址 ContentLangDirection="ltr/rtl" 默认文字方向 ContextMenu=字符串数组,右键菜单的内容 CustomConfigurationsPath="" 自定义配置文件路径和名称 Debug=true/false 是否开启调试功能,这样,当调用FCKDebug.Output()时,会在调试窗中输出内容

WPF ContextMenu 在MVVM模式中绑定 Command及使用CommandParameter传参

原文:WPF ContextMenu 在MVVM模式中绑定 Command及使用CommandParameter传参 ContextMenu无论定义在.cs或.xaml文件中,都不继承父级的DataContext,所以如果要绑定父级的DataContext,直接DataContext=“{Binding}”是行不通的 不能绑父级,但是能绑资源 第一步:定义一个中间类用来做资源对象 1 public class BindingProxy : Freezable 2 { 3 #region Over

做预解释题的一点小方法和小技巧

在JavaScript中的函数理解中预解释是一个比较难懂的话题.原理虽然简单,寥寥数言,但其内涵却有深意,精髓难懂.如何在轻松活跃的头脑中将它学会,现在针对我在学习中的一点小窍门给大家分享一下,希望能给大家一些帮助: 万事需遵循"原理"--"预解释"无节操和"this"指向:(可先看例题解析然后结合原理进行学习) (感谢蕾蕾老师给归纳的预解释无节操原理:) 如果函数传参数则先于以下执行,就相当于在函数私有作用域下var了一个变量:根据作用域原理,

Android插件实例——360 DroidPlugin具体解释

在中国找到钱不难,但你的一个点子不意味着是一个创业.你谈一个再好的想法,比方我今天谈一个创意说,新浪为什么不收购GOOGLE呢?这个创意非常好.新浪一收购GOOGLE.是不是新浪就变成老大了?你从哪儿弄来钱?怎么去整合GOOGLE呢: 之前写过有关于Android 插件方向的文章,解析了一下Android的插件原理与执行方式.非常多小伙伴都问我.为什么不把我制作的插件放到Github上,让大家共享一下. 我仅仅能说.大哥啊,这个插件是我在公司研发的时候制作的,商业机密.不能开源啊. 刚好.近期逛

使用TCP时序图解释BBR拥塞控制算法的几个细节

周六,由于要赶一个月底的Deadline,因此选择了在家VPN加班,大半夜就爬起来跑用例,抓数据...自然也就没有时间写文章和外出耍了...不过利用周日的午夜时间(不要问我为什么可以连续24小时不睡觉,因为我觉得吃饭睡觉是负担),我决定把工作上的事情先放下,还是要把每周至少一文补上,这已经成了习惯.由于上周实在太忙乱,所以自然根本没有更多的时间去思考一些"与工作无关且深入"的东西,我指的与工作无关并非意味着与IT,与互联网无关,只是意味着不是目前我在做的.比如在两年前,VPN,PKI这

LoadRunner函数大全之中文解释

LoadRunner函数大全之中文解释

《巨婴国》:差评。伪科学/非科学,逻辑比较差,以偏概全,解释牵强,竖起一个稻草人打得挺嗨。1星

读后感觉比较差.只能给1星.相当于负分的水平. 作者认为中国人大部分是没长大的婴儿,不能正确处理人际关系,隐含地推论常见的心理疾病.变态人格.不正常情商都是巨婴病的表现,明确地推论巨婴理论可以解释许多世界历史和国际政治上的事情. 差评理由有下面几个: 1:“巨婴国”的学说到底是不是一个严肃的学术上的推论?我认为不是.我认为可以归入伪科学或非科学的范畴.作者虽然是北大心理学系的本科和硕士毕业,但是全书是浓郁的江湖派的风格.作者提到了一个惊世骇俗的“巨婴学说”,并且断定中国人大部分是“巨婴”,因此中

进程与线程的一个简单解释

作者: 阮一峰 日期: 2013年4月24日 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1. 计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. 2. 假定工厂的电力有限,一次只能供给一个车间使用.也就是说,一个车间开工的时候,其他车间都必须停工.背后的含义就是,单个CPU一次只能运行一个任务. 3. 进程就好比工厂的车间,它代表CPU所能处理的

关于添加-objc后缀的解释

这是我直接复制别人的, 所说还有的不太懂, 但是感觉很有用(原文地址:http://www.th7.cn/Program/IOS/201403/181096.shtml): 最近在做一个项目的时候,需要使用到一个第三方库,这个库的使用向导里面特别说明,在添加完该库后,需要在Xcode的Build Settings下Other Linker Flags里面加入-ObjC标志,这个标志以前没使用过,所以我就专门研究了一下它的作用. 之所以使用该标志,和Objective-C的一个重要特性:类别(ca