swipeRefreshLayout與webview滑動沖突


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

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,這次終於能完美解決了!

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM