Android创建浮动的上下文菜单,实现微信通讯录列表长按弹出菜单项功能

上次的博客中实现了微信通讯录的效果后 微信通讯录效果,现在给通讯录联系人增加长按弹出上下文菜单功能,效果如下:

这里写图片描述

功能和实现也比较简单,步骤如下:
第一步:调用方法registerForContextMenu() 注册你要弹出浮动菜单的view,一般是ListView或者GridView。
第二步:在Activity中实现 onCreateContextMenu() 方法。
第三步:实现onContextItemSelected()方法,完成浮动菜单选项的点击选择事件。

代码接着实现微信通讯录效果来,首先第一步注册ListView

//mMainList是ListView对象
registerForContextMenu(mMainList);

接着重写onCreateContextMenu方法,加载浮动菜单选项

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_menu, menu);
}

这里涉及到的context_menu菜单资源文件如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/context_top"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="置顶"/>
    <item
        android:id="@+id/context_delete"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="删除"/>
    <item
        android:id="@+id/context_share"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="分享"/>

</menu>

最后处理菜单的选择事件:

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();
    switch (item.getItemId()) {
    case R.id.context_top:
        ToastUtils.showToast(this, "置顶");
        return true;
    case R.id.context_delete:
        ToastUtils.showToast(this, "删除");
        return true;
    case R.id.context_share:
        ToastUtils.showToast(this, "分享");
        return true;
    default:
        return super.onContextItemSelected(item);
    }
}

也就是说,当注册的ListView接收到长按事件,系统会调用onCreateContextMenu()方法,然后当用户选择了菜单选项后,系统会调用onContextItemSelected()方法来进行处理。

以上就是三步实现Android浮动的上下文菜单功能,其实在Android官网中,还有另外的一种方法,但是感觉比这种稍微复杂一点,就没有使用那种了。

参考资源:Android API

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值