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

This commit is contained in:
HapeLee
2025-08-28 14:15:55 +08:00
parent 1a2bd5f431
commit bc9bd557bb
2 changed files with 77 additions and 54 deletions
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.app.Activity.RESULT_OK
import android.content.Intent
import android.graphics.Canvas
import android.graphics.Rect
import android.os.Bundle
import android.view.View
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.VerticalDivider
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.observeEvent
import io.legato.kazusa.utils.themeColor
@@ -147,11 +148,24 @@ class ChapterListFragment : VMBaseFragment<TocViewModel>(R.layout.fragment_chapt
binding.recyclerView.layoutManager = mLayoutManager
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
}
private fun initView() = binding.run {
cdBase.applyNavigationBarMargin()
llBase.applyNavigationBarPadding()
btnChapterTop.setOnClickListener {
mLayoutManager.scrollToPositionWithOffset(0, 0)
}
@@ -13,68 +13,77 @@
app:layout_constraintTop_toTopOf="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_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">
<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_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_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>