|
|
@@ -5,12 +5,14 @@ import android.graphics.Paint
|
|
|
import android.graphics.Rect
|
|
|
import android.text.TextPaint
|
|
|
import android.view.View
|
|
|
+import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
|
import io.legado.app.lib.theme.accentColor
|
|
|
-import io.legado.app.lib.theme.primaryColor
|
|
|
+import io.legado.app.lib.theme.backgroundColor
|
|
|
import io.legado.app.utils.dpToPx
|
|
|
import io.legado.app.utils.spToPx
|
|
|
import splitties.init.appCtx
|
|
|
+import kotlin.math.min
|
|
|
|
|
|
class BookmarkDecoration(val adapter: BookmarkAdapter) : RecyclerView.ItemDecoration() {
|
|
|
|
|
|
@@ -18,7 +20,7 @@ class BookmarkDecoration(val adapter: BookmarkAdapter) : RecyclerView.ItemDecora
|
|
|
private val headerHeight = 32f.dpToPx()
|
|
|
|
|
|
private val headerPaint = Paint().apply {
|
|
|
- color = appCtx.primaryColor
|
|
|
+ color = appCtx.backgroundColor
|
|
|
}
|
|
|
private val textPaint = TextPaint().apply {
|
|
|
textSize = 16f.spToPx()
|
|
|
@@ -52,45 +54,45 @@ class BookmarkDecoration(val adapter: BookmarkAdapter) : RecyclerView.ItemDecora
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
|
|
|
-// val position = (parent.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
|
|
|
-// val view = parent.findViewHolderForAdapterPosition(position)?.itemView ?: return
|
|
|
-// val isHeader = adapter.isItemHeader(position + 1)
|
|
|
-// val headerText = adapter.getHeaderText(position)
|
|
|
-// if (isHeader) {
|
|
|
-// val bottom = min(headerHeight.toInt(), view.bottom)
|
|
|
-// c.drawRect(
|
|
|
-// 0f,
|
|
|
-// view.top.toFloat(),
|
|
|
-// parent.width.toFloat(),
|
|
|
-// view.top + headerHeight,
|
|
|
-// headerPaint
|
|
|
-// )
|
|
|
-// textPaint.getTextBounds(headerText, 0, headerText.length, textRect)
|
|
|
-// c.drawText(
|
|
|
-// headerText,
|
|
|
-// headerLeft,
|
|
|
-// headerHeight / 2 + textRect.height() / 2 - (headerHeight - bottom),
|
|
|
-// textPaint
|
|
|
-// )
|
|
|
-// } else {
|
|
|
-// c.drawRect(
|
|
|
-// 0f,
|
|
|
-// 0f,
|
|
|
-// parent.width.toFloat(),
|
|
|
-// headerHeight,
|
|
|
-// headerPaint
|
|
|
-// )
|
|
|
-// textPaint.getTextBounds(headerText, 0, headerText.length, textRect)
|
|
|
-// c.drawText(
|
|
|
-// headerText,
|
|
|
-// headerLeft,
|
|
|
-// headerHeight / 2 + textRect.height() / 2,
|
|
|
-// textPaint
|
|
|
-// )
|
|
|
-// }
|
|
|
-// c.save()
|
|
|
-// }
|
|
|
+ override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
|
|
|
+ val position = (parent.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
|
|
|
+ val view = parent.findViewHolderForAdapterPosition(position)?.itemView ?: return
|
|
|
+ val isHeader = adapter.isItemHeader(position + 1)
|
|
|
+ val headerText = adapter.getHeaderText(position)
|
|
|
+ if (isHeader) {
|
|
|
+ val bottom = min(headerHeight.toInt(), view.bottom)
|
|
|
+ c.drawRect(
|
|
|
+ 0f,
|
|
|
+ view.top - headerHeight,
|
|
|
+ parent.width.toFloat(),
|
|
|
+ bottom.toFloat(),
|
|
|
+ headerPaint
|
|
|
+ )
|
|
|
+ textPaint.getTextBounds(headerText, 0, headerText.length, textRect)
|
|
|
+ c.drawText(
|
|
|
+ headerText,
|
|
|
+ headerLeft,
|
|
|
+ headerHeight / 2 + textRect.height() / 2 - (headerHeight - bottom),
|
|
|
+ textPaint
|
|
|
+ )
|
|
|
+ } else {
|
|
|
+ c.drawRect(
|
|
|
+ 0f,
|
|
|
+ 0f,
|
|
|
+ parent.width.toFloat(),
|
|
|
+ headerHeight,
|
|
|
+ headerPaint
|
|
|
+ )
|
|
|
+ textPaint.getTextBounds(headerText, 0, headerText.length, textRect)
|
|
|
+ c.drawText(
|
|
|
+ headerText,
|
|
|
+ headerLeft,
|
|
|
+ headerHeight / 2 + textRect.height() / 2,
|
|
|
+ textPaint
|
|
|
+ )
|
|
|
+ }
|
|
|
+ c.save()
|
|
|
+ }
|
|
|
|
|
|
override fun getItemOffsets(
|
|
|
outRect: Rect,
|