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)
|
pagerSnapHelper.attachToRecyclerView(binding.recyclerView)
|
||||||
// binding.recyclerView.scheduleLayoutAnimation()
|
// binding.recyclerView.scheduleLayoutAnimation()
|
||||||
binding.recyclerView.scrollToPosition(dayOfWeek)
|
binding.recyclerView.scrollToPosition(dayOfWeek)
|
||||||
|
binding.dayTabs.getTabAt(dayOfWeek)?.select()
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.fab.setOnClickListener { view ->
|
binding.fab.setOnClickListener { view ->
|
||||||
@@ -75,24 +76,21 @@ class EventFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
binding.recyclerView.addOnScrollListener(object : OnScrollListener() {
|
binding.recyclerView.addOnScrollListener(object : OnScrollListener() {
|
||||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
|
||||||
super.onScrolled(recyclerView, dx, dy)
|
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
|
||||||
isUserScrolling = true
|
super.onScrollStateChanged(recyclerView, newState)
|
||||||
val i = if (dx < 0) {
|
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
||||||
layoutManager.findFirstVisibleItemPosition()
|
binding.dayTabs.getTabAt(layoutManager.findFirstVisibleItemPosition())?.select()
|
||||||
} else {
|
|
||||||
layoutManager.findLastVisibleItemPosition()
|
|
||||||
}
|
}
|
||||||
binding.dayTabs.getTabAt(i)?.select()
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
binding.dayTabs.addOnTabSelectedListener(object : OnTabSelectedListener {
|
binding.dayTabs.addOnTabSelectedListener(object : OnTabSelectedListener {
|
||||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||||
if (!isUserScrolling) {
|
isUserScrolling = false
|
||||||
binding.recyclerView.smoothScrollToPosition(tab.position)
|
binding.recyclerView.smoothScrollToPosition(tab.position)
|
||||||
Log.d("HELLO4", binding.recyclerView.scrollY.toString())
|
Log.d("HELLO4", binding.recyclerView.scrollY.toString())
|
||||||
} // TODO where to set isUserScrolling back to true?
|
// TODO where to set isUserScrolling back to true?
|
||||||
}
|
}
|
||||||
override fun onTabUnselected(tab: TabLayout.Tab?) {}
|
override fun onTabUnselected(tab: TabLayout.Tab?) {}
|
||||||
override fun onTabReselected(tab: TabLayout.Tab?) {}
|
override fun onTabReselected(tab: TabLayout.Tab?) {}
|
||||||
|
|||||||
@@ -25,7 +25,8 @@
|
|||||||
android:id="@+id/day_tabs"
|
android:id="@+id/day_tabs"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:tabMode="scrollable">
|
app:tabMode="scrollable"
|
||||||
|
android:layout_gravity="bottom">
|
||||||
|
|
||||||
<com.google.android.material.tabs.TabItem
|
<com.google.android.material.tabs.TabItem
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
Reference in New Issue
Block a user