From 03496c71f8c7df6b03c8fa7c891be036ddf3fd07 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Sat, 8 Nov 2025 02:05:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=B8=AA=E9=80=89=E6=8B=A9=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E7=9A=84=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/widget/AccentColorButton.kt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 app/src/main/java/io/legado/app/ui/widget/AccentColorButton.kt diff --git a/app/src/main/java/io/legado/app/ui/widget/AccentColorButton.kt b/app/src/main/java/io/legado/app/ui/widget/AccentColorButton.kt new file mode 100644 index 000000000..cba5f9675 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/AccentColorButton.kt @@ -0,0 +1,40 @@ +package io.legado.app.ui.widget + +import android.content.Context +import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable +import android.util.AttributeSet +import com.google.android.material.button.MaterialButton +import io.legado.app.utils.dpToPx + +class AccentColorButton @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, +) : MaterialButton(context, attrs) { + + var color: Int = 0 + set(value) { + field = value + iconTint = null + icon = createColorPreviewDrawable(value) + } + + init { + setPaddingRelative(14.dpToPx(), 8.dpToPx(), 6.dpToPx(), 8.dpToPx()) + iconGravity = ICON_GRAVITY_END + iconPadding = 8.dpToPx() + iconSize = 28.dpToPx() + } + + private fun createColorPreviewDrawable(color: Int): Drawable { + return GradientDrawable().apply { + shape = GradientDrawable.RECTANGLE + cornerRadius = 16f.dpToPx() + setColor(color) + } + } + +} + + +