WebView嵌套滑动冲突
import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.webkit.WebView; public class MyWebView extends WebView { public interface RefreshStateListener { public void refreshState(boolean canRefresh); } private RefreshStateListener refreshStateListener; public void setRefreshStateListener(RefreshStateListener refreshStateListener) { this.refreshStateListener = refreshStateListener; } public MyWebView(Context context) { super(context); } public MyWebView(Context context, AttributeSet attrs) { super(context, attrs); } public MyWebView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public MyWebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { super.onOverScrolled(scrollX, scrollY, clampedX, clampedY); if (refreshStateListener != null) { refreshStateListener.refreshState(clampedY); } } @Override public boolean onTouchEvent(MotionEvent event) { if (refreshStateListener != null && event.getAction() == MotionEvent.ACTION_DOWN) { refreshStateListener.refreshState(false); } return super.onTouchEvent(event); } }
使用时
webView.setRefreshStateListener { refreshLayout.setEnableRefresh(it) }