ContextMenu的使用具体解释

Posted gavanwanggw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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地址




以上是关于ContextMenu的使用具体解释的主要内容,如果未能解决你的问题,请参考以下文章

有人可以解释以下 R 代码片段吗? [关闭]

26个jQuery代码片段使用技巧

20160206.CCPP体系具体解释(0016天)

右键单击visjs中的节点(contextmenu)打开扩展弹出窗口(html列表)

有趣的 C++ 代码片段,有啥解释吗? [复制]

需要对特定 R 代码片段的解释