Horis 1 год назад
Родитель
Сommit
4164cc53fe
1 измененных файлов с 15 добавлено и 1 удалено
  1. 15 1
      app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt

+ 15 - 1
app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt

@@ -54,6 +54,7 @@ import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.withContext
 import kotlinx.coroutines.withContext
 import splitties.init.appCtx
 import splitties.init.appCtx
+import kotlin.math.abs
 
 
 class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel>(),
 class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel>(),
     BookAdapter.CallBack,
     BookAdapter.CallBack,
@@ -240,7 +241,20 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
             override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
             override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                 super.onScrolled(recyclerView, dx, dy)
                 super.onScrolled(recyclerView, dx, dy)
                 if (!recyclerView.canScrollVertically(1)) {
                 if (!recyclerView.canScrollVertically(1)) {
-                    scrollToBottom()
+                    val layoutManager = recyclerView.layoutManager as LinearLayoutManager
+                    val lastPosition = layoutManager.findLastCompletelyVisibleItemPosition()
+                    if (lastPosition == RecyclerView.NO_POSITION) {
+                        return
+                    }
+                    val lastView = layoutManager.findViewByPosition(lastPosition)
+                    if (lastView == null) {
+                        scrollToBottom()
+                        return
+                    }
+                    val bottom = abs(lastView.bottom - recyclerView.height)
+                    if (bottom <= 1) {
+                        scrollToBottom()
+                    }
                 }
                 }
             }
             }
         })
         })