webview与viewpager滑动冲突解决方案

问题:viewpager中嵌套webview,webview中存在左右滑动时,webview滑动失效

解决方案:处理滑动冲突事件,触摸是优先将事件给予webview处理(注:但是也会有小几率的偶发滑动冲突失效,机型手机有关系),重要代码,如:

/**
 * 判定Viewpager的来源Fragment
 */

public interface IWebViewPager {

    /**
     * viewpager滑动是否可用
     *
     * @param b true可用 false不可用
     */
    void setViewPager(boolean b);
}


package com.yunji.in.widget.web;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.webkit.WebView;


/**
 * 自定义webview,兼容适配viewpager滑动冲突
 */
public class CustomWebView extends WebView {

    CustomWebView webView;
    IWebViewPager webViewFragment;


    public CustomWebView(Context context) {
        super(context);
        webView = this;
    }

    public CustomWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomWebView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    public void setFragment(IWebViewPager webViewFragment) {
        this.webViewFragment = webViewFragment;

    }

    @Override
    protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
        //Enables ViewPager when scroll reaches end.
        webViewFragment.setViewPager(true);
        super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        super.onTouchEvent(event);
        //disables ViewPager when user presses down
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            webViewFragment.setViewPager(false);
            return true;
        }

        return true;
    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章