diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java
index 02d3b21c..c849b879 100644
--- a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java
+++ b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java
@@ -162,8 +162,6 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene
} else {
body = HTML_TEMPLATE.replace("@body@", text);
}
- body = body.replace("src=\"/", "src=\"/Xposed-Modules-Repo/" + module.getName() + "/raw/main/")
- .replace("href=\"/", "href=\"/Xposed-Modules-Repo/" + module.getName() + "/blob/main/");
view.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
diff --git a/app/src/main/java/org/lsposed/manager/ui/widget/ScrollWebView.java b/app/src/main/java/org/lsposed/manager/ui/widget/ScrollWebView.java
new file mode 100644
index 00000000..c83972b5
--- /dev/null
+++ b/app/src/main/java/org/lsposed/manager/ui/widget/ScrollWebView.java
@@ -0,0 +1,63 @@
+package org.lsposed.manager.ui.widget;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewParent;
+import android.webkit.WebView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.view.ScrollingView;
+import androidx.viewpager2.widget.ViewPager2;
+
+public class ScrollWebView extends WebView {
+ public ScrollWebView(@NonNull Context context) {
+ super(context);
+ }
+
+ public ScrollWebView(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public ScrollWebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public ScrollWebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ var viewParent = findViewParentIfNeeds(this);
+ if (viewParent != null) viewParent.requestDisallowInterceptTouchEvent(true);
+ }
+ return super.onTouchEvent(event);
+ }
+
+ @Override
+ protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
+ if (clampedX) {
+ var viewParent = findViewParentIfNeeds(this);
+ if (viewParent != null) viewParent.requestDisallowInterceptTouchEvent(false);
+ }
+ super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
+ }
+
+ private static ViewParent findViewParentIfNeeds(View v) {
+ var parent = v.getParent();
+ if (parent == null) return null;
+ if (parent instanceof ViewPager2 || parent instanceof ScrollingView) {
+ return parent;
+ } else if (parent instanceof View) {
+ return findViewParentIfNeeds((View) parent);
+ } else {
+ return parent;
+ }
+ }
+}
diff --git a/app/src/main/res/layout/item_repo_readme.xml b/app/src/main/res/layout/item_repo_readme.xml
index e05b8651..03fa1c1e 100644
--- a/app/src/main/res/layout/item_repo_readme.xml
+++ b/app/src/main/res/layout/item_repo_readme.xml
@@ -35,7 +35,7 @@
app:borderTopDrawable="@null"
app:borderBottomVisibility="never">
-
-