Android WebView:如何使上下文菜单适用于文本区域?

Android WebView:如何使上下文菜单适用于文本区域?,android,webview,contextmenu,Android,Webview,Contextmenu,将上下文菜单添加到webview很简单。但是,默认情况下,菜单仅在单击链接或图像时弹出,而不是在常规文本区域上弹出 我发现这建议只在活动中添加LongClick,但我尝试了一下,结果一点也没有成功 //-------------------------------- 编辑: 我从一个相关的问题中得到了一个提示,我必须将webview子类化并重写一些函数。我似乎能让上下文菜单正常工作。但是,webview的行为并不正常。特别是,我不能再滚动视图了。我想我错过了什么。非常感谢你的帮助。这是我的密码:

将上下文菜单添加到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创建的。