DennisVA
DennisVA

Reputation: 2119

scrolling up in webview causes refresh by SwipeRefreshLayout

I have a WebView inside a FrameLayout, to add tabs because i am creating a browser. The FrameLayout is inside a SwipeRefreshLayout.

The problem: Whenever i scroll the content up fast in the WebView, the refresh icon appears from behind the toolbar. It should only happen when the WebView content is at the top. It has something to do with the FrameLayout, when i remove it, the issue is gone.

The layout looks like this:

<SwipeRefreshLayout
            android:id="@+id/swipeRefresh"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

        <FrameLayout
        android:id="@+id/webViewFrame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"    
        >
        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        </FrameLayout>

</SwipeRefreshLayout>

Upvotes: 12

Views: 4706

Answers (2)

Akash Jp
Akash Jp

Reputation: 162

No Solution worked for me. Here is my approach.

 @Override
 public boolean dispatchTouchEvent(MotionEvent event)
 {
super.dispatchTouchEvent(event);
int x = (int)event.getX();
int y = (int)event.getY();
 if(y>800){
     swipeRefreshLayout.setEnabled(false);
 }else {
     swipeRefreshLayout.setEnabled(true);
 }


return false;
}

Upvotes: 0

Ashish Kumawat
Ashish Kumawat

Reputation: 695

Just implement your Fragment or Activity with ViewTreeObserver.OnScrollChangedListener then set Listener like webview.getViewTreeObserver().addOnScrollChangedListener(this);

In onScrollChanged() method do like this

@Override
public void onScrollChanged() {
    if (webview.getScrollY() == 0) {
        swipeLayout.setEnabled(true);
    } else {
        swipeLayout.setEnabled(false);
    }
}

Upvotes: 2

Related Questions