Fix ScrollWebView (#2333)

#777
This commit is contained in:
南宫雪珊 2023-01-16 05:00:10 +08:00 committed by GitHub
parent 46295297d7
commit 878d8ea22d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 4 deletions

View File

@ -29,8 +29,9 @@ import android.webkit.WebView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.view.ScrollingView; import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
import rikka.widget.borderview.BorderRecyclerView;
public class ScrollWebView extends WebView { public class ScrollWebView extends WebView {
public ScrollWebView(@NonNull Context context) { public ScrollWebView(@NonNull Context context) {
@ -61,7 +62,7 @@ public class ScrollWebView extends WebView {
@Override @Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
if (clampedX || clampedY) { if (clampedX) {
var viewParent = findViewParentIfNeeds(this); var viewParent = findViewParentIfNeeds(this);
if (viewParent != null) viewParent.requestDisallowInterceptTouchEvent(false); if (viewParent != null) viewParent.requestDisallowInterceptTouchEvent(false);
} }
@ -71,7 +72,7 @@ public class ScrollWebView extends WebView {
private static ViewParent findViewParentIfNeeds(View v) { private static ViewParent findViewParentIfNeeds(View v) {
var parent = v.getParent(); var parent = v.getParent();
if (parent == null) return null; if (parent == null) return null;
if (parent instanceof ViewPager2 || parent instanceof ScrollingView) { if (parent instanceof RecyclerView && !(parent instanceof BorderRecyclerView)) {
return parent; return parent;
} else if (parent instanceof View) { } else if (parent instanceof View) {
return findViewParentIfNeeds((View) parent); return findViewParentIfNeeds((View) parent);