Disable swipes over WebXDC

Stephen Paul Weber created

Change summary

src/cheogram/java/com/cheogram/android/WebviewAwareViewPager.java | 26 +
src/main/res/layout/fragment_conversation.xml                     |  4 
2 files changed, 28 insertions(+), 2 deletions(-)

Detailed changes

src/cheogram/java/com/cheogram/android/WebviewAwareViewPager.java 🔗

@@ -0,0 +1,26 @@
+package com.cheogram.android;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.webkit.WebView;
+
+public class WebviewAwareViewPager extends androidx.viewpager.widget.ViewPager {
+	public WebviewAwareViewPager(Context context) {
+		super(context);
+	}
+
+	public WebviewAwareViewPager(Context context, AttributeSet attrs) {
+		super(context, attrs);
+	}
+
+	@Override
+	protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
+		if (v instanceof WebView) {
+			// This disables all viewpager swiping over the webview, which is a bit too aggressive
+			// But the default is to do it too often, so tradeoffs...
+			return true;
+		}
+		return super.canScroll(v, checkV, dx, x, y);
+	}
+}

src/main/res/layout/fragment_conversation.xml 🔗

@@ -15,7 +15,7 @@
             app:tabGravity="fill"
             app:tabMode="scrollable" />
 
-        <androidx.viewpager.widget.ViewPager
+        <com.cheogram.android.WebviewAwareViewPager
             android:id="@+id/conversation_view_pager"
             android:layout_below="@id/tab_layout"
             android:layout_width="fill_parent"
@@ -316,7 +316,7 @@
 
             </RelativeLayout>
 
-        </androidx.viewpager.widget.ViewPager>
+        </com.cheogram.android.WebviewAwareViewPager>
 
     </RelativeLayout>
 </layout>