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。
我一直在尝试自定义 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。