소스 검색

Fix scroll position with many categories. Closes #332

len 8 년 전
부모
커밋
2d1e85f280
2개의 변경된 파일3개의 추가작업 그리고 10개의 파일을 삭제
  1. 3 8
      app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryFragment.kt
  2. 0 2
      app/src/main/res/layout/activity_main.xml

+ 3 - 8
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryFragment.kt

@@ -139,6 +139,7 @@ class LibraryFragment : BaseRxFragment<LibraryPresenter>(), ActionMode.Callback
     }
 
     override fun onDestroyView() {
+        tabs.setupWithViewPager(null)
         tabs.visibility = View.GONE
         super.onDestroyView()
     }
@@ -261,18 +262,12 @@ class LibraryFragment : BaseRxFragment<LibraryPresenter>(), ActionMode.Callback
 
         // Set the categories
         adapter.categories = categories
-        tabs.setupWithViewPager(view_pager)
         tabs.visibility = if (categories.size <= 1) View.GONE else View.VISIBLE
 
         // Restore active category.
         view_pager.setCurrentItem(activeCat, false)
-        if (tabs.tabCount > 0) {
-            // Prevent IndexOutOfBoundsException
-            if (tabs.tabCount <= view_pager.currentItem) {
-                view_pager.currentItem = (tabs.tabCount - 1)
-            }
-            tabs.getTabAt(view_pager.currentItem)?.select()
-        }
+        // Delay the scroll position to allow the view to be properly measured.
+        view_pager.post { tabs.setScrollPosition(view_pager.currentItem, 0f, true) }
 
         // Send the manga map to child fragments after the adapter is updated.
         presenter.libraryMangaSubject.onNext(LibraryMangaEvent(mangaMap))

+ 0 - 2
app/src/main/res/layout/activity_main.xml

@@ -20,8 +20,6 @@
             <include layout="@layout/toolbar"/>
 
             <android.support.design.widget.TabLayout
-                xmlns:android="http://schemas.android.com/apk/res/android"
-                xmlns:app="http://schemas.android.com/apk/res-auto"
                 android:id="@+id/tabs"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"