select 文本上的 webview 上下文菜单

webview contexual menu on select text

我一直在尝试自定义 webview 的上下文菜单,在 webview 中选择文本时会出现该菜单。

基本上我想在菜单中添加或删除项目。并在项目点击时添加一些自定义事件。

我已经尝试了一些类似下面链接的解决方案,但没有成功。 我最终得到的只是一个对话菜单。

https://developer.android.com/guide/topics/ui/menus.html#CAB

经过反复试验,我找到了一个合理的解决方案。 只是为了完整起见而张贴在这里,以防万一有人遇到类似的问题。

解决方案是创建一个我使用 PopupWindow 实现的替代菜单。 而我,使用 GestureDetector.

在长按事件中调用了它
myWebView.setWebChromeClient(new MyWebChromeClient());
mGestureDetector = new GestureDetector(getActivity(), new CustomGestureListener());
mGestureDetector = new GestureListener(getActivity(),myWebView);
final GestureDetector gd = new GestureDetector(getActivity(), mGestureDetector);

    //====== web-view popup menu
    myWebView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            gd.onTouchEvent(motionEvent);

            return false;
        }
    });

Gesture Listener 比较基础,可以找到代码here

与 web-view 数据的其余交互是使用 JavaScript 完成的,使用下面的代码,更多信息可以在 google dev guide

中找到
WebView xview = (WebView)view;
xview.loadUrl("javascript:alert(showAndroidToast('underline'))");

好吧,这已经为我完成了工作,结果如下图所示,希望对某人有所帮助。

或者除非有人有更好的solution/code。