فهرست منبع

修复目录最后一项视图被遮挡的问题

HapeLee 1 سال پیش
والد
کامیت
bc9bd557bb
2فایلهای تغییر یافته به همراه77 افزوده شده و 54 حذف شده
  1. 16 2
      app/src/main/java/io/legato/kazusa/ui/book/toc/ChapterListFragment.kt
  2. 61 52
      app/src/main/res/layout/fragment_chapter_list.xml

+ 16 - 2
app/src/main/java/io/legato/kazusa/ui/book/toc/ChapterListFragment.kt

@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
 import android.app.Activity.RESULT_OK
 import android.app.Activity.RESULT_OK
 import android.content.Intent
 import android.content.Intent
 import android.graphics.Canvas
 import android.graphics.Canvas
+import android.graphics.Rect
 import android.os.Bundle
 import android.os.Bundle
 import android.view.View
 import android.view.View
 import androidx.core.content.ContextCompat
 import androidx.core.content.ContextCompat
@@ -27,7 +28,7 @@ import io.legato.kazusa.model.CacheBook
 import io.legato.kazusa.ui.widget.recycler.UpLinearLayoutManager
 import io.legato.kazusa.ui.widget.recycler.UpLinearLayoutManager
 import io.legato.kazusa.ui.widget.recycler.VerticalDivider
 import io.legato.kazusa.ui.widget.recycler.VerticalDivider
 import io.legato.kazusa.utils.VibrationUtils
 import io.legato.kazusa.utils.VibrationUtils
-import io.legato.kazusa.utils.applyNavigationBarMargin
+import io.legato.kazusa.utils.applyNavigationBarPadding
 import io.legato.kazusa.utils.dpToPx
 import io.legato.kazusa.utils.dpToPx
 import io.legato.kazusa.utils.observeEvent
 import io.legato.kazusa.utils.observeEvent
 import io.legato.kazusa.utils.themeColor
 import io.legato.kazusa.utils.themeColor
@@ -147,11 +148,24 @@ class ChapterListFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_chapt
 
 
         binding.recyclerView.layoutManager = mLayoutManager
         binding.recyclerView.layoutManager = mLayoutManager
         binding.recyclerView.addItemDecoration(VerticalDivider(requireContext()))
         binding.recyclerView.addItemDecoration(VerticalDivider(requireContext()))
+        binding.recyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() {
+            override fun getItemOffsets(
+                outRect: Rect,
+                view: View,
+                parent: RecyclerView,
+                state: RecyclerView.State
+            ) {
+                if (parent.getChildAdapterPosition(view) == state.itemCount - 1) {
+                    outRect.bottom = 80.dpToPx()
+                }
+            }
+        })
+
         binding.recyclerView.adapter = adapter
         binding.recyclerView.adapter = adapter
     }
     }
 
 
     private fun initView() = binding.run {
     private fun initView() = binding.run {
-        cdBase.applyNavigationBarMargin()
+        llBase.applyNavigationBarPadding()
         btnChapterTop.setOnClickListener {
         btnChapterTop.setOnClickListener {
             mLayoutManager.scrollToPositionWithOffset(0, 0)
             mLayoutManager.scrollToPositionWithOffset(0, 0)
         }
         }

+ 61 - 52
app/src/main/res/layout/fragment_chapter_list.xml

@@ -13,68 +13,77 @@
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent" />
         app:layout_constraintBottom_toBottomOf="parent" />
 
 
-    <com.google.android.material.card.MaterialCardView
-        android:id="@+id/cd_base"
+    <LinearLayout
+        android:id="@+id/ll_base"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginHorizontal="16dp"
-        app:cardBackgroundColor="?attr/colorSurfaceContainer"
-        app:cardElevation="8dp"
-        app:strokeWidth="0dp"
+        android:orientation="horizontal"
         app:layout_constraintBottom_toBottomOf="parent">
         app:layout_constraintBottom_toBottomOf="parent">
 
 
-        <LinearLayout
-            android:id="@+id/ll_chapter_base_info"
+        <com.google.android.material.card.MaterialCardView
+            android:id="@+id/cd_base"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:gravity="center"
-            android:orientation="horizontal"
-            android:paddingVertical="8dp"
-            android:paddingStart="16dp"
-            android:paddingEnd="10dp">
+            android:layout_height="wrap_content"
+            android:layout_marginHorizontal="16dp"
+            android:layout_marginVertical="8dp"
+            app:cardBackgroundColor="?attr/colorSurfaceContainer"
+            app:cardElevation="4dp"
+            app:strokeWidth="0dp">
 
 
-            <TextView
-                android:id="@+id/tv_current_chapter_info"
-                android:layout_width="0dp"
+            <LinearLayout
+                android:id="@+id/ll_chapter_base_info"
+                android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:layout_height="match_parent"
-                android:layout_weight="1"
-                android:gravity="center_vertical"
-                android:singleLine="true"
-                android:textSize="12sp"
-                android:textStyle="bold" />
+                android:gravity="center"
+                android:orientation="horizontal"
+                android:paddingVertical="8dp"
+                android:paddingStart="16dp"
+                android:paddingEnd="10dp">
 
 
-            <com.google.android.material.button.MaterialButton
-                android:id="@+id/btn_locate"
-                style="@style/Widget.Material3Expressive.Button.IconButton.Outlined"
-                android:layout_width="40dp"
-                android:layout_height="40dp"
-                android:contentDescription="@string/locate_current"
-                app:icon="@drawable/ic_locate"
-                app:iconGravity="textStart"
-                app:iconPadding="0dp"
-                app:iconSize="16dp" />
+                <TextView
+                    android:id="@+id/tv_current_chapter_info"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:gravity="center_vertical"
+                    android:singleLine="true"
+                    android:textSize="12sp"
+                    android:textStyle="bold" />
 
 
-            <com.google.android.material.button.MaterialButton
-                android:id="@+id/btn_chapter_top"
-                style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
-                android:layout_width="40dp"
-                android:layout_height="40dp"
-                android:contentDescription="@string/go_to_top"
-                app:icon="@drawable/ic_arrow_drop_up"
-                app:iconGravity="textStart"
-                app:iconPadding="0dp" />
+                <com.google.android.material.button.MaterialButton
+                    android:id="@+id/btn_locate"
+                    style="@style/Widget.Material3Expressive.Button.IconButton.Outlined"
+                    android:layout_width="40dp"
+                    android:layout_height="40dp"
+                    android:contentDescription="@string/locate_current"
+                    app:icon="@drawable/ic_locate"
+                    app:iconGravity="textStart"
+                    app:iconPadding="0dp"
+                    app:iconSize="16dp" />
 
 
-            <com.google.android.material.button.MaterialButton
-                android:id="@+id/btn_chapter_bottom"
-                style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
-                android:layout_width="40dp"
-                android:layout_height="40dp"
-                android:contentDescription="@string/go_to_bottom"
-                app:icon="@drawable/ic_arrow_drop_down"
-                app:iconGravity="textStart"
-                app:iconPadding="0dp" />
+                <com.google.android.material.button.MaterialButton
+                    android:id="@+id/btn_chapter_top"
+                    style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
+                    android:layout_width="40dp"
+                    android:layout_height="40dp"
+                    android:contentDescription="@string/go_to_top"
+                    app:icon="@drawable/ic_arrow_drop_up"
+                    app:iconGravity="textStart"
+                    app:iconPadding="0dp" />
+
+                <com.google.android.material.button.MaterialButton
+                    android:id="@+id/btn_chapter_bottom"
+                    style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
+                    android:layout_width="40dp"
+                    android:layout_height="40dp"
+                    android:contentDescription="@string/go_to_bottom"
+                    app:icon="@drawable/ic_arrow_drop_down"
+                    app:iconGravity="textStart"
+                    app:iconPadding="0dp" />
+
+            </LinearLayout>
+        </com.google.android.material.card.MaterialCardView>
+    </LinearLayout>
 
 
-        </LinearLayout>
-    </com.google.android.material.card.MaterialCardView>
 
 
 </androidx.constraintlayout.widget.ConstraintLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>