From 0de75c4ef7102cca3290e2448ac09b8b28381c65 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Sat, 28 Feb 2026 16:57:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20#5713?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widget/NoChildScrollNestedScrollView.kt | 19 +++++++++++++------ .../NoChildScrollLinearLayoutManager.kt | 19 ++++--------------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/widget/NoChildScrollNestedScrollView.kt b/app/src/main/java/io/legado/app/ui/widget/NoChildScrollNestedScrollView.kt index 4b5ca03e6..b518eb812 100644 --- a/app/src/main/java/io/legado/app/ui/widget/NoChildScrollNestedScrollView.kt +++ b/app/src/main/java/io/legado/app/ui/widget/NoChildScrollNestedScrollView.kt @@ -11,12 +11,19 @@ class NoChildScrollNestedScrollView @JvmOverloads constructor( attrs: AttributeSet? = null, ) : NestedScrollView(context, attrs) { - override fun requestChildRectangleOnScreen( - child: View, - rectangle: Rect?, - immediate: Boolean - ): Boolean { - return false + private var isRequestChildFocus = false + + override fun requestChildFocus(child: View?, focused: View?) { + isRequestChildFocus = true + super.requestChildFocus(child, focused) + isRequestChildFocus = false + } + + override fun computeScrollDeltaToGetChildRectOnScreen(rect: Rect?): Int { + if (isRequestChildFocus) { + return 0 + } + return super.computeScrollDeltaToGetChildRectOnScreen(rect) } } diff --git a/app/src/main/java/io/legado/app/ui/widget/recycler/NoChildScrollLinearLayoutManager.kt b/app/src/main/java/io/legado/app/ui/widget/recycler/NoChildScrollLinearLayoutManager.kt index 55435ce1a..f57ce828d 100644 --- a/app/src/main/java/io/legado/app/ui/widget/recycler/NoChildScrollLinearLayoutManager.kt +++ b/app/src/main/java/io/legado/app/ui/widget/recycler/NoChildScrollLinearLayoutManager.kt @@ -1,7 +1,6 @@ package io.legado.app.ui.widget.recycler import android.content.Context -import android.graphics.Rect import android.util.AttributeSet import android.view.View import androidx.recyclerview.widget.LinearLayoutManager @@ -14,23 +13,13 @@ class NoChildScrollLinearLayoutManager @JvmOverloads constructor( defStyleRes: Int = 0 ) : LinearLayoutManager(context, attrs, defStyleAttr, defStyleRes) { - override fun requestChildRectangleOnScreen( + override fun onRequestChildFocus( parent: RecyclerView, + state: RecyclerView.State, child: View, - rect: Rect, - immediate: Boolean, - focusedChildVisible: Boolean + focused: View? ): Boolean { - return false - } - - override fun requestChildRectangleOnScreen( - parent: RecyclerView, - child: View, - rect: Rect, - immediate: Boolean - ): Boolean { - return false + return true } }