Android WebView:如何使上下文菜单适用于文本区域?
将上下文菜单添加到webview很简单。但是,默认情况下,菜单仅在单击链接或图像时弹出,而不是在常规文本区域上弹出 我发现这建议只在活动中添加LongClick,但我尝试了一下,结果一点也没有成功 //-------------------------------- 编辑: 我从一个相关的问题中得到了一个提示,我必须将webview子类化并重写一些函数。我似乎能让上下文菜单正常工作。但是,webview的行为并不正常。特别是,我不能再滚动视图了。我想我错过了什么。非常感谢你的帮助。这是我的密码:Android WebView:如何使上下文菜单适用于文本区域?,android,webview,contextmenu,Android,Webview,Contextmenu,将上下文菜单添加到webview很简单。但是,默认情况下,菜单仅在单击链接或图像时弹出,而不是在常规文本区域上弹出 我发现这建议只在活动中添加LongClick,但我尝试了一下,结果一点也没有成功 //-------------------------------- 编辑: 我从一个相关的问题中得到了一个提示,我必须将webview子类化并重写一些函数。我似乎能让上下文菜单正常工作。但是,webview的行为并不正常。特别是,我不能再滚动视图了。我想我错过了什么。非常感谢你的帮助。这是我的密码:
public class MyWebView extends WebView {
WebViewerActivity _activity;
Context _context;
GestureDetector _gd;
public MyWebView(Context context, AttributeSet attributeSet){
super(context, attributeSet);
this._context = context;
_gd = new GestureDetector(context, sogl);
}
public void setActivity(WebViewerActivity activity){
_activity = activity;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return _gd.onTouchEvent(ev);
}
GestureDetector.SimpleOnGestureListener sogl = new GestureDetector.SimpleOnGestureListener(){
public boolean onDown(MotionEvent event)
{
return true;
}
public void onLongPress(MotionEvent event)
{
_activity.onLongClick(MyWebView.this);
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
MyWebView.this.scrollBy((int)distanceX, (int)distanceY);
return true;
}
};
}
//--------------------------------
更多编辑:
好的,我向SimpleNogestureListener添加了onScroll覆盖,如上所示,它使webview滚动工作。但是,如果您将webview滚动到太远的外部,它的原始滚动会自动反弹。然而,这个滚动没有这样好的功能。你知道怎么解决这个问题吗 尝试将onLongClickListener注册到WebView。视图可能正在使用事件,而没有将其传递回活动。我假设当前工作的菜单是通过使用Activity.registerForContextMenu?注册WebView创建的。非常感谢您的回答。事实上,我也试过了,它也没有被击中。是的,我的上下文菜单是通过Activity.registerForContextMenuwebView创建的。