swipeRefreshLayout與webview滑動衝突

遇到這麼個bug,webview使用swipeRefreshLayout時,下拉時事件不會被webview捕獲,而是執行swipeRefreshLayout的刷新,網上一大堆一大堆的解決辦法,都是什麼重寫swipeRefreshLayout或者重寫WebView,原本爲了快點解決bug copy了一下,結果發現媽的智障。。。琢磨了一下,很簡單的一個事。。。android

mWebView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
    @Override
    public void onScrollChange(View view, int i, int i1, int i2, int i3) {
        if (mWebView.getScrollY() == 0){
            swipeRefreshLayout.setEnabled(true);
        }else {
            swipeRefreshLayout.setEnabled(false);
        }
    }
});

 


直接給webview加個監聽器,這個方法貌似在android不一樣版本會出現不兼容的狀況。。。因此又有另一種方法,重寫onScrollChanged
public class WebView4Scroll extends WebView {

    private SwipeRefreshLayout swipeRefreshLayout;

    public WebView4Scroll(Context context, SwipeRefreshLayout swipeRefreshLayout){
        super(context);
        this.swipeRefreshLayout = swipeRefreshLayout;
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if (this.getScrollY() == 0){
            swipeRefreshLayout.setEnabled(true);
        }else {
            swipeRefreshLayout.setEnabled(false);
        }
    }
}

重寫webview,重寫onScrollChanged,此次終於能完美解決了!web

 

重點:本質上仍是要理解事件分發機制ide

相關文章
相關標籤/搜索