Archived
Tab layout now syncs up with recyclerview scroll position; a bit sluggish though
This commit is contained in:
@@ -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?) {}
|
||||
|
||||
@@ -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">
|
||||
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
Reference in New Issue
Block a user