腾讯X5内核实现长按弹出自定义菜单方法


我的需求是用户长按WebView,实现蓝色背景和水滴选中效果,并且只弹出我自定义的菜单。

由于腾讯X5内核底层流程不是用actionmode实现的,所以自定义startActionMode or startActionModeForChild都是不会被执行的。所以要想实现自定义菜单,并且屏蔽掉内核自带的长按菜单还是很麻烦的。

  1. 根据官网尝试实现IX5WebViewClientExtension所有方法,并重写onShowLongClickPopupMenu方法让他返回True,设置给X5WebView。这么写会直接把长按复制操作都给禁用了,长按直接没效果了,我自己的菜单也弹不出来了,所以这是不行的。

  1. 让前端屏蔽某个节点或整个页面的长按菜单,代码如下:
document.oncontextmenu=function(){
window.event.returnValue=false;
}

这么写长按的时候也会没效果。


最终实现方法
  • 给X5设置setSelectListener方法,实现ISelectionInterface接口方法,全部返回空即可。
  • 给webview设置的IX5WebViewClientExtension中实现onShowLongClickPopupMenu方法让他返回True,设置方法有2个:
    • 实现IX5WebViewClientExtension所有方法,并重写onShowLongClickPopupMenu方法让他返回True,设置给X5WebView。
    • 创建ProxyWebViewClientExtension对象并重写onShowLongClickPopupMenu方法让他返回True,不需要实现全部方法。官方推荐使用这一种
  • 调用mX5WebView.getX5WebViewExtension().enterSelectionMode(boolean isSelectALL),根据情况是否全选,设置对应参数。这个方法需要写在onShowLongClickPopupMenu方法里面,否则会报空指针异常。并且需要设置延迟调用,否则会出现你长按选中的一直是你上一次长按的地方
    在这里插入图片描述
最后感谢官方@腾讯开发-zhengyu大佬的指导回复。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值