向webview添加上下文菜单非常简单。但是,默认情况下,只有在单击链接或图像时才会弹出菜单,但不会在常规文本区域中弹出菜单。
我发现这个One建议将onLongClick添加到活动中,但我尝试了它并且它根本没有受到攻击。
// --------------------------------------------- ------------------
编辑:
我得到了一个相关问题的提示,我必须将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;
}
};
}
// --------------------------------------------- ------------------
更多编辑:
好的,我将onScroll的覆盖添加到SimpleOnGestureListener,如上所示,它使webview滚动工作。但是,如果将其滚动到外面太远,webview的原始滚动会自动反弹。但是,这种滚动没有这个很好的功能。知道如何解决这个问题吗?
答案 0 :(得分:0)
尝试使用WebView注册onLongClickListener。该视图可能正在消耗该事件,而不是将其传递回Activity。我假设通过使用Activity.registerForContextMenu()注册WebView来创建当前工作菜单?