ScrollView内嵌套 WebView WebView 拦截滚动事件问题

来源:互联网 发布:淘宝童装店铺名称大全 编辑:程序博客网 时间:2024/05/17 02:57
  1. 问题描述:
    为了满足文本描述样式多样性,支持富文本展示,想到了好快多省的WebView,
    该区域位于ScrollView中,但是当滑动到WebView中,滑动就不再会起作用。

  2. 解决思路:
    自定义继承WebView,监听滚动,拿到滚动距离,在回调中将滚动距离作用到外层的scrollview上。

  3. 具体实现:
    自定义PowerWebView:
    import android.content.Context;
    import android.util.AttributeSet;
    import android.webkit.WebView;

    public class PowerWebView extends WebView {

    private OnScrollChangedCallback mOnScrollChangedCallback;public PowerWebView(Context context, AttributeSet attrs, int defStyleAttr) {    super(context, attrs, defStyleAttr);    // TODO Auto-generated constructor stub}public PowerWebView(Context context, AttributeSet attrs) {    super(context, attrs);    // TODO Auto-generated constructor stub}public PowerWebView(Context context) {    super(context);    // TODO Auto-generated constructor stub}public void setOnScrollChangedCallback(        final OnScrollChangedCallback onScrollChangedCallback) {    mOnScrollChangedCallback = onScrollChangedCallback;}public static interface OnScrollChangedCallback {    public void onScroll(int deltaY);}@Overridepublic boolean overScrollBy(int deltaX, int deltaY, int scrollX,        int scrollY, int scrollRangeX, int scrollRangeY,        int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {    if (mOnScrollChangedCallback != null) {        mOnScrollChangedCallback.onScroll(deltaY);    }     return true;}

    }
    调用伪代码
    public class XXFragment extends Fragment implements OnScrollChangedCallback{

    productWebView.setOnScrollChangedCallback(this);

        @Overridepublic void onScroll(int deltaY) {    // TODO Auto-generated method stub    int y = s_view.getScrollY()+deltaY;    s_view.smoothScrollTo(0, y);}   

    }

  4. 总结:
    比较蛋疼的解决方式,目前还没有发现更好的方式,有更好的处理方式望伙伴们告知。

0 0