一个选择颜色的按钮
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user