From a37b6dfd0bc5a48974e6af1b2c3ba4e027698822 Mon Sep 17 00:00:00 2001 From: denizk0461 Date: Wed, 12 Apr 2023 09:46:27 +0200 Subject: [PATCH] Tab layout now syncs up with recyclerview scroll position; a bit sluggish though --- .../studip/fragment/EventFragment.kt | 22 +++++++++---------- app/src/main/res/layout/fragment_event.xml | 3 ++- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt b/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt index 101b0a9..b9ee2c4 100644 --- a/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt +++ b/app/src/main/java/com/denizk0461/studip/fragment/EventFragment.kt @@ -68,6 +68,7 @@ class EventFragment : Fragment() { pagerSnapHelper.attachToRecyclerView(binding.recyclerView) // binding.recyclerView.scheduleLayoutAnimation() binding.recyclerView.scrollToPosition(dayOfWeek) + binding.dayTabs.getTabAt(dayOfWeek)?.select() } binding.fab.setOnClickListener { view -> @@ -75,24 +76,21 @@ class EventFragment : Fragment() { } binding.recyclerView.addOnScrollListener(object : OnScrollListener() { - override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { - super.onScrolled(recyclerView, dx, dy) - isUserScrolling = true - val i = if (dx < 0) { - layoutManager.findFirstVisibleItemPosition() - } else { - layoutManager.findLastVisibleItemPosition() + + override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { + super.onScrollStateChanged(recyclerView, newState) + if (newState == RecyclerView.SCROLL_STATE_IDLE) { + binding.dayTabs.getTabAt(layoutManager.findFirstVisibleItemPosition())?.select() } - binding.dayTabs.getTabAt(i)?.select() } }) binding.dayTabs.addOnTabSelectedListener(object : OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab) { - if (!isUserScrolling) { - binding.recyclerView.smoothScrollToPosition(tab.position) - Log.d("HELLO4", binding.recyclerView.scrollY.toString()) - } // TODO where to set isUserScrolling back to true? + isUserScrolling = false + binding.recyclerView.smoothScrollToPosition(tab.position) + Log.d("HELLO4", binding.recyclerView.scrollY.toString()) + // TODO where to set isUserScrolling back to true? } override fun onTabUnselected(tab: TabLayout.Tab?) {} override fun onTabReselected(tab: TabLayout.Tab?) {} diff --git a/app/src/main/res/layout/fragment_event.xml b/app/src/main/res/layout/fragment_event.xml index 8d3572e..9ae1073 100644 --- a/app/src/main/res/layout/fragment_event.xml +++ b/app/src/main/res/layout/fragment_event.xml @@ -25,7 +25,8 @@ android:id="@+id/day_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" - app:tabMode="scrollable"> + app:tabMode="scrollable" + android:layout_gravity="bottom">