scwang90/SmartRefreshLayout

WebView嵌套滑动冲突终极解决方案

Offen

#1.287 geöffnet am 18.12.2020

 (10 Kommentare) (9 Reaktionen) (0 zugewiesene Personen)Java (4.956 Forks)batch import
good first issue

Repository-Metriken

Stars
 (25.127 Sterne)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

在WebView下拉刷新的时候,如果html中还有自己的下拉,那在SmartRefreshLayout中就会出现各种问题。我解决了这个问题,给大家分享一下解决方案。 首先自定义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那里加上一句代码即可。

webView.setRefreshStateListener {
    refreshLayout.setEnableRefresh(it)
}

目前没有发现任何问题,可以尝试使用百度首页测试。

Contributor Guide