搜索与发现项目
This commit is contained in:
@@ -3,6 +3,7 @@ package io.legato.kazusa.ui.book.explore
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import androidx.core.view.isVisible
|
||||
import io.legato.kazusa.R
|
||||
import io.legato.kazusa.base.adapter.ItemViewHolder
|
||||
@@ -11,7 +12,10 @@ import io.legato.kazusa.data.entities.Book
|
||||
import io.legato.kazusa.data.entities.SearchBook
|
||||
import io.legato.kazusa.databinding.ItemSearchBinding
|
||||
import io.legato.kazusa.help.config.AppConfig
|
||||
import io.legato.kazusa.ui.widget.text.AccentBgTextView
|
||||
import io.legato.kazusa.utils.dpToPx
|
||||
import io.legato.kazusa.utils.gone
|
||||
import io.legato.kazusa.utils.spToPx
|
||||
import io.legato.kazusa.utils.visible
|
||||
|
||||
|
||||
@@ -53,13 +57,25 @@ class ExploreShowAdapter(context: Context, val callBack: CallBack) :
|
||||
tvIntroduce.text = item.trimIntro(context)
|
||||
val kinds = item.getKindList()
|
||||
if (kinds.isEmpty()) {
|
||||
tvKind.gone()
|
||||
tvAuthorKind.gone()
|
||||
kindContainer.gone()
|
||||
} else {
|
||||
tvAuthorKind.visible()
|
||||
tvKind.visible()
|
||||
val kindText = kinds.joinToString(" • ")
|
||||
tvKind.text = kindText
|
||||
kindContainer.visible()
|
||||
kindContainer.removeAllViews()
|
||||
kinds.forEach { kind ->
|
||||
val kindTextView = AccentBgTextView(context).apply {
|
||||
layoutParams = LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT
|
||||
).apply {
|
||||
marginEnd = 6.dpToPx()
|
||||
}
|
||||
textSize = 11f
|
||||
text = kind
|
||||
setLines(1)
|
||||
setSingleLine(true)
|
||||
}
|
||||
kindContainer.addView(kindTextView)
|
||||
}
|
||||
}
|
||||
ivCover.load(
|
||||
item.coverUrl,
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.legato.kazusa.ui.book.search
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import io.legato.kazusa.R
|
||||
@@ -11,6 +12,8 @@ import io.legato.kazusa.base.adapter.ItemViewHolder
|
||||
import io.legato.kazusa.data.entities.SearchBook
|
||||
import io.legato.kazusa.databinding.ItemSearchBinding
|
||||
import io.legato.kazusa.help.config.AppConfig
|
||||
import io.legato.kazusa.ui.widget.text.AccentBgTextView
|
||||
import io.legato.kazusa.utils.dpToPx
|
||||
import io.legato.kazusa.utils.gone
|
||||
import io.legato.kazusa.utils.visible
|
||||
|
||||
@@ -135,13 +138,25 @@ class SearchAdapter(context: Context, val callBack: CallBack) :
|
||||
|
||||
private fun upKind(binding: ItemSearchBinding, kinds: List<String>) = binding.run {
|
||||
if (kinds.isEmpty()) {
|
||||
tvKind.gone()
|
||||
tvAuthorKind.gone()
|
||||
kindContainer.gone()
|
||||
} else {
|
||||
tvAuthorKind.visible()
|
||||
tvKind.visible()
|
||||
val kindText = kinds.joinToString(" • ")
|
||||
tvKind.text = kindText
|
||||
kindContainer.visible()
|
||||
kindContainer.removeAllViews()
|
||||
kinds.forEach { kind ->
|
||||
val kindTextView = AccentBgTextView(context).apply {
|
||||
layoutParams = LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT
|
||||
).apply {
|
||||
marginEnd = 4.dpToPx()
|
||||
}
|
||||
textSize = 11f
|
||||
text = kind
|
||||
setLines(1)
|
||||
setSingleLine(true)
|
||||
}
|
||||
kindContainer.addView(kindTextView)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package io.legato.kazusa.ui.widget.text
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.Gravity
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import com.google.android.material.textview.MaterialTextView
|
||||
import io.legato.kazusa.R
|
||||
@@ -9,6 +10,7 @@ import io.legato.kazusa.lib.theme.Selector
|
||||
import io.legato.kazusa.utils.ColorUtils
|
||||
import io.legato.kazusa.utils.dpToPx
|
||||
import androidx.core.content.withStyledAttributes
|
||||
import io.legato.kazusa.utils.spToPx
|
||||
import io.legato.kazusa.utils.themeColor
|
||||
|
||||
class AccentBgTextView @JvmOverloads constructor(
|
||||
@@ -16,13 +18,14 @@ class AccentBgTextView @JvmOverloads constructor(
|
||||
attrs: AttributeSet? = null
|
||||
) : MaterialTextView(context, attrs) {
|
||||
|
||||
private var radiusPx = 32
|
||||
private var radiusPx = 20
|
||||
|
||||
init {
|
||||
// context.withStyledAttributes(attrs, R.styleable.AccentBgTextView) {
|
||||
// val radiusDp = getDimensionPixelOffset(R.styleable.AccentBgTextView_radius, 0)
|
||||
// radiusPx = radiusDp
|
||||
// }
|
||||
gravity = Gravity.CENTER
|
||||
includeFontPadding = false
|
||||
val horizontalPadding = 6.dpToPx()
|
||||
val verticalPadding = 2.dpToPx()
|
||||
setPadding(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding)
|
||||
updateBackground()
|
||||
}
|
||||
|
||||
@@ -32,8 +35,8 @@ class AccentBgTextView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
private fun updateBackground() {
|
||||
val backgroundColor = context.themeColor(com.google.android.material.R.attr.colorPrimaryContainer)
|
||||
val textColor = context.themeColor(com.google.android.material.R.attr.colorOnPrimaryContainer)
|
||||
val backgroundColor = context.themeColor(com.google.android.material.R.attr.colorSecondaryContainer)
|
||||
val textColor = context.themeColor(com.google.android.material.R.attr.colorOnSecondaryContainer)
|
||||
|
||||
background = Selector.shapeBuild()
|
||||
.setCornerRadius(radiusPx)
|
||||
@@ -43,5 +46,4 @@ class AccentBgTextView @JvmOverloads constructor(
|
||||
|
||||
setTextColor(textColor)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user