问题: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;
}
}