From 5d65725ead66a50570e9ba9ae19e495b0ede997b Mon Sep 17 00:00:00 2001 From: Ankur Date: Tue, 6 Feb 2024 16:17:52 -0800 Subject: [PATCH] Fix [ChannelFragment]: resolve stuttering at bottom of scroll -Removed ScrollView. RecyclerView itself handles scrolling, nesting it inside a ScrollView is possibly leading to conflicting scrolling behavior effecting performance(i.e stuttering when scrolling at bottom and updating list with new data items). -Used AppBarLayout and CollapsingToolbarLayout as containers for content(banner etc) above list of videos items. Together with CoordinatorLayout, these components streamline scrolling behavior and UI interactions with each other and RecyclerView. --- .../libretube/ui/fragments/ChannelFragment.kt | 5 +- app/src/main/res/layout/fragment_channel.xml | 298 +++++++++--------- 2 files changed, 155 insertions(+), 148 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt index 0a6d27b7c..eeee9f711 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt @@ -90,10 +90,10 @@ class ChannelFragment : DynamicLayoutManagerFragment() { fetchChannel() } - binding.channelScrollView.viewTreeObserver.addOnScrollChangedListener { + binding.channelRecView.viewTreeObserver.addOnScrollChangedListener { val binding = _binding ?: return@addOnScrollChangedListener - if (binding.channelScrollView.canScrollVertically(1) || isLoading) return@addOnScrollChangedListener + if (binding.channelRecView.canScrollVertically(1) || isLoading) return@addOnScrollChangedListener loadNextPage() } @@ -199,7 +199,6 @@ class ChannelFragment : DynamicLayoutManagerFragment() { isLoading = false binding.channelRefresh.isRefreshing = false - binding.channelScrollView.isVisible = true binding.channelName.text = response.name if (response.verified) { binding.channelName diff --git a/app/src/main/res/layout/fragment_channel.xml b/app/src/main/res/layout/fragment_channel.xml index 77c26fb09..c033d726c 100644 --- a/app/src/main/res/layout/fragment_channel.xml +++ b/app/src/main/res/layout/fragment_channel.xml @@ -6,165 +6,173 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + android:layout_height="match_parent"> - + android:layout_height="wrap_content"> - - - - - + android:layout_height="wrap_content" + app:layout_scrollFlags="scroll" + app:titleCollapseMode="scale"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_collapseMode="pin"> - + - + + + + + + + + + + + + + + + + + + + + + android:layout_marginHorizontal="5dp" + android:autoLink="web" + android:padding="10dp" /> + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +