[修复] 隐藏标签时,进入软件后恢复上一次的分组定位 #348

This commit is contained in:
HapeLee
2025-11-30 13:26:04 +08:00
parent 883a9551c5
commit 8ec91efcc4
3 changed files with 18 additions and 14 deletions
@@ -71,7 +71,7 @@ class BookshelfFragment1() : BaseBookshelfFragment(R.layout.fragment_bookshelf1)
private fun initView() {
adapter = TabFragmentPageAdapter(this)
binding.viewPagerBookshelf.adapter = adapter
binding.viewPagerBookshelf.offscreenPageLimit = 1
binding.viewPagerBookshelf.offscreenPageLimit = 3
TabLayoutMediator(binding.tabLayout, binding.viewPagerBookshelf) { tab, position ->
tab.text = bookGroups[position].groupName
@@ -26,7 +26,6 @@ import kotlin.collections.set
* 书架界面
*/
class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3),
TabLayout.OnTabSelectedListener,
SearchView.OnQueryTextListener {
constructor(position: Int) : this() {
@@ -63,12 +62,13 @@ class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3)
private fun initView() {
adapter = TabFragmentPageAdapter(this)
binding.viewPagerBookshelf.adapter = adapter
binding.viewPagerBookshelf.offscreenPageLimit = 1
binding.viewPagerBookshelf.offscreenPageLimit = 3
binding.viewPagerBookshelf.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
updateToolbarTitle(position)
AppConfig.saveTabPosition = position
}
})
}
@@ -100,8 +100,8 @@ class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3)
adapter.notifyDataSetChanged()
adapter = TabFragmentPageAdapter(this)
binding.viewPagerBookshelf.adapter = adapter
updateToolbarTitle(binding.viewPagerBookshelf.currentItem)
selectLastTab()
}
}
}
@@ -117,19 +117,23 @@ class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3)
}
}
override fun onTabReselected(tab: TabLayout.Tab) {
}
override fun onTabUnselected(tab: TabLayout.Tab) = Unit
override fun onTabSelected(tab: TabLayout.Tab) {
AppConfig.saveTabPosition = tab.position
}
override fun gotoTop() {
fragmentMap[groupId]?.gotoTop()
}
private fun selectLastTab() {
val lastPosition = AppConfig.saveTabPosition
if (lastPosition in 0 until bookGroups.size) {
binding.viewPagerBookshelf.post {
binding.viewPagerBookshelf.setCurrentItem(lastPosition, false)
updateToolbarTitle(lastPosition)
}
} else {
AppConfig.saveTabPosition = 0
updateToolbarTitle(0)
}
}
private inner class TabFragmentPageAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {
override fun getItemCount(): Int = bookGroups.size
@@ -67,7 +67,7 @@ class BookshelfFragment4() : BaseBookshelfFragment(R.layout.fragment_bookshelf4)
private fun initView() {
adapter = TabFragmentPageAdapter(this)
binding.viewPagerBookshelf.adapter = adapter
binding.viewPagerBookshelf.offscreenPageLimit = 1
binding.viewPagerBookshelf.offscreenPageLimit = 3
TabLayoutMediator(binding.tabLayout, binding.viewPagerBookshelf) { tab, position ->
tab.text = bookGroups[position].groupName