token自定义增加色值,宽度直接设置模式
This commit is contained in:
parent
cfee7191c8
commit
f30db51681
|
|
@ -181,24 +181,41 @@ fun View.changeBackground(
|
|||
*/
|
||||
fun View.changeBackground(customViewToken: CustomViewToken) {
|
||||
customViewToken.run {
|
||||
setTokenBgColor(
|
||||
normalToken = backgroundUIColorToken,
|
||||
pressedToken = backgroundUIPressedColorToken,
|
||||
hoveredToken = backgroundUIHoveredColorToken,
|
||||
disabledToken = backgroundUIDisabledColorToken,
|
||||
radiusToken = radiusToken,
|
||||
topLeftRadiusToken = topLeftRadiusToken.ifEmpty { radiusToken },
|
||||
topRightRadiusToken = topRightRadiusToken.ifEmpty { radiusToken },
|
||||
bottomRightRadiusToken = bottomRightRadiusToken.ifEmpty { radiusToken },
|
||||
bottomLeftRadiusToken = bottomLeftRadiusToken.ifEmpty { radiusToken },
|
||||
strokeColorWidthToken = strokeUIWidthToken,
|
||||
normalStrokeColorToken = strokeUIColorToken,
|
||||
pressedStrokeColorToken = strokeUIPressedColorToken,
|
||||
hoveredStrokeColorToken = strokeUIHoveredColorToken,
|
||||
disabledStrokeColorToken = strokeUIDisabledColorToken,
|
||||
dashWidth = strokeDashWidth,
|
||||
dashGap = strokeDashGap,
|
||||
)
|
||||
if (advRadius > 0 || advStrokeWidth > 0 ||
|
||||
advTopRightRadius > 0 || advTopLeftRadius > 0 ||
|
||||
advBottomLeftRadius > 0 || advBottomRightRadius > 0) {
|
||||
setBgColorDirectly(
|
||||
bgColor = advBgColor,
|
||||
radius = advRadius,
|
||||
topLeftRadius = if (advTopLeftRadius > 0F) advTopLeftRadius else advRadius,
|
||||
topRightRadius = if (advTopRightRadius > 0F) advTopRightRadius else advRadius,
|
||||
bottomRightRadius = if (advBottomRightRadius > 0F) advBottomRightRadius else advRadius,
|
||||
bottomLeftRadius = if (advBottomLeftRadius > 0F) advBottomLeftRadius else advRadius,
|
||||
strokeWidth = advStrokeWidth,
|
||||
strokeColor = advStrokeColor,
|
||||
)
|
||||
|
||||
} else {
|
||||
setTokenBgColor(
|
||||
normalToken = backgroundUIColorToken,
|
||||
pressedToken = backgroundUIPressedColorToken,
|
||||
hoveredToken = backgroundUIHoveredColorToken,
|
||||
disabledToken = backgroundUIDisabledColorToken,
|
||||
radiusToken = radiusToken,
|
||||
topLeftRadiusToken = topLeftRadiusToken.ifEmpty { radiusToken },
|
||||
topRightRadiusToken = topRightRadiusToken.ifEmpty { radiusToken },
|
||||
bottomRightRadiusToken = bottomRightRadiusToken.ifEmpty { radiusToken },
|
||||
bottomLeftRadiusToken = bottomLeftRadiusToken.ifEmpty { radiusToken },
|
||||
strokeColorWidthToken = strokeUIWidthToken,
|
||||
normalStrokeColorToken = strokeUIColorToken,
|
||||
pressedStrokeColorToken = strokeUIPressedColorToken,
|
||||
hoveredStrokeColorToken = strokeUIHoveredColorToken,
|
||||
disabledStrokeColorToken = strokeUIDisabledColorToken,
|
||||
dashWidth = strokeDashWidth,
|
||||
dashGap = strokeDashGap,
|
||||
)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -491,3 +508,67 @@ fun View.getGradientDrawable(
|
|||
)
|
||||
return gradientDrawable
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//*------------------------ new added ------------------------*//
|
||||
|
||||
/**
|
||||
* 设置背景色
|
||||
*/
|
||||
fun View.setBgColorDirectly(
|
||||
bgColor: Int = 0,
|
||||
radius: Float = 0F,
|
||||
topLeftRadius: Float = radius,
|
||||
topRightRadius: Float = radius,
|
||||
bottomRightRadius: Float = radius,
|
||||
bottomLeftRadius: Float = radius,
|
||||
strokeWidth: Float = 0F,
|
||||
strokeColor: Int = -1
|
||||
) {
|
||||
val resDrawable = StateListDrawable()
|
||||
val normalDrawable = getGradientDrawableDirectly(
|
||||
bgColor,
|
||||
topLeftRadius,
|
||||
topRightRadius,
|
||||
bottomRightRadius,
|
||||
bottomLeftRadius,
|
||||
strokeWidth,
|
||||
strokeColor
|
||||
)
|
||||
resDrawable.addState(intArrayOf(android.R.attr.state_enabled), normalDrawable)
|
||||
background = resDrawable
|
||||
}
|
||||
|
||||
|
||||
fun View.getGradientDrawableDirectly(
|
||||
bgColor: Int = 0,
|
||||
topLeftRadius: Float = 0F,
|
||||
topRightRadius: Float = 0F,
|
||||
bottomRightRadius: Float = 0F,
|
||||
bottomLeftRadius: Float = 0F,
|
||||
strokeWidth: Float = 0F,
|
||||
strokeColor: Int = -1
|
||||
): Drawable {
|
||||
val gradientDrawable = GradientDrawable()
|
||||
gradientDrawable.shape = GradientDrawable.RECTANGLE
|
||||
gradientDrawable.setColor(bgColor)
|
||||
|
||||
if (strokeWidth > 0) {
|
||||
gradientDrawable.setStroke(strokeWidth.toInt(), strokeColor)
|
||||
}
|
||||
|
||||
gradientDrawable.cornerRadii = floatArrayOf(
|
||||
topLeftRadius,
|
||||
topLeftRadius,
|
||||
topRightRadius,
|
||||
topRightRadius,
|
||||
bottomRightRadius,
|
||||
bottomRightRadius,
|
||||
bottomLeftRadius,
|
||||
bottomLeftRadius
|
||||
)
|
||||
return gradientDrawable
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.remax.visualnovel.widget.uitoken.bean
|
||||
|
||||
import android.graphics.Color
|
||||
|
||||
/**
|
||||
* Created by HJW on 2022/9/1
|
||||
*/
|
||||
|
|
@ -41,4 +43,15 @@ data class CustomViewToken(
|
|||
var onlyIconFont: Boolean = false,
|
||||
var fixTextIsSelectable: Boolean = false,
|
||||
var underline: Boolean = false,
|
||||
|
||||
|
||||
//---------------------- New added -----------------------
|
||||
var advBgColor:Int = Color.WHITE,
|
||||
var advRadius:Float = 0F,
|
||||
var advTopLeftRadius:Float = 0F,
|
||||
var advTopRightRadius:Float = 0F,
|
||||
var advBottomRightRadius:Float = 0F,
|
||||
var advBottomLeftRadius:Float = 0F,
|
||||
var advStrokeColor: Int = Color.BLACK,
|
||||
var advStrokeWidth:Float = 0F,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -77,6 +77,17 @@ open class UITokenTextView @JvmOverloads constructor(context: Context, private v
|
|||
onlyIconFont = getBoolean(R.styleable.UITokenTextView_onlyIconFont, onlyIconFont)
|
||||
underline = getBoolean(R.styleable.UITokenTextView_underline, underline)
|
||||
fixTextIsSelectable = getBoolean(R.styleable.UITokenTextView_fixTextIsSelectable, fixTextIsSelectable)
|
||||
|
||||
|
||||
//<!-- new added 2025.10.29 -->
|
||||
advBgColor = getColor(R.styleable.UITokenTextView_advBgColor, advBgColor)
|
||||
advRadius = getDimension(R.styleable.UITokenTextView_advRadius, advRadius)
|
||||
advTopLeftRadius = getDimension(R.styleable.UITokenTextView_advTopLeftRadius, advTopLeftRadius)
|
||||
advTopRightRadius = getDimension(R.styleable.UITokenTextView_advTopRightRadius, advTopRightRadius)
|
||||
advBottomRightRadius = getDimension(R.styleable.UITokenTextView_advBottomRightRadius, advBottomRightRadius)
|
||||
advBottomLeftRadius = getDimension(R.styleable.UITokenTextView_advBottomLeftRadius, advBottomLeftRadius)
|
||||
advStrokeColor = getColor(R.styleable.UITokenTextView_advStrokeColor, advStrokeColor)
|
||||
advStrokeWidth = getDimension(R.styleable.UITokenTextView_advStrokeWidth, advStrokeWidth)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,19 @@
|
|||
android:text="@string/setting"
|
||||
/>
|
||||
|
||||
<com.remax.visualnovel.widget.uitoken.view.UITokenTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_45"
|
||||
android:padding="@dimen/dp_45"
|
||||
android:text="Test....Test"
|
||||
app:advBgColor="@color/glo_color_blue_80"
|
||||
app:advRadius="@dimen/dp_30"
|
||||
app:advStrokeColor="@color/black"
|
||||
app:advStrokeWidth="@dimen/dp_5"
|
||||
android:gravity="center"
|
||||
/>
|
||||
|
||||
|
||||
<!-- Ai model selecting related -->
|
||||
<com.remax.visualnovel.widget.uitoken.view.UITokenTextView
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<com.remax.visualnovel.widget.uitoken.view.UITokenTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="aaaaaaaaaaaaaa"
|
||||
android:padding="@dimen/dp_45"
|
||||
app:advBgColor="@color/glo_color_blue_40"
|
||||
app:advRadius="@dimen/dp_15"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
@ -97,6 +97,17 @@
|
|||
format="boolean" />
|
||||
<attr name="textLinkColorToken"
|
||||
format="string" />
|
||||
|
||||
|
||||
<!-- new added 2025.10.29 -->
|
||||
<attr name="advBgColor" format="color" />
|
||||
<attr name="advRadius" format="dimension" />
|
||||
<attr name="advTopLeftRadius" format="dimension" />
|
||||
<attr name="advTopRightRadius" format="dimension" />
|
||||
<attr name="advBottomRightRadius" format="dimension" />
|
||||
<attr name="advBottomLeftRadius" format="dimension" />
|
||||
<attr name="advStrokeColor" format="color" />
|
||||
<attr name="advStrokeWidth" format="dimension" />
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="UITokenEditView">
|
||||
|
|
@ -125,6 +136,16 @@
|
|||
<attr name="outlineToken" />
|
||||
<attr name="xClickExpend" />
|
||||
<attr name="yClickExpend" />
|
||||
|
||||
<!-- new added 2025.10.29 -->
|
||||
<!--<attr name="advBgColor" format="color" />
|
||||
<attr name="advRadius" format="dimension" />
|
||||
<attr name="advTopLeftRadius" format="dimension" />
|
||||
<attr name="advTopRightRadius" format="dimension" />
|
||||
<attr name="advBottomRightRadius" format="dimension" />
|
||||
<attr name="advBottomLeftRadius" format="dimension" />
|
||||
<attr name="advStrokeColor" format="color" />
|
||||
<attr name="advStrokeWidth" format="dimension" />-->
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="UITokenImageView">
|
||||
|
|
@ -148,6 +169,16 @@
|
|||
<attr name="outlineToken" />
|
||||
<attr name="xClickExpend" />
|
||||
<attr name="yClickExpend" />
|
||||
|
||||
<!-- new added 2025.10.29 -->
|
||||
<!--<attr name="advBgColor" format="color" />
|
||||
<attr name="advRadius" format="dimension" />
|
||||
<attr name="advTopLeftRadius" format="dimension" />
|
||||
<attr name="advTopRightRadius" format="dimension" />
|
||||
<attr name="advBottomRightRadius" format="dimension" />
|
||||
<attr name="advBottomLeftRadius" format="dimension" />
|
||||
<attr name="advStrokeColor" format="color" />
|
||||
<attr name="advStrokeWidth" format="dimension" />-->
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="UITokenFrameLayout">
|
||||
|
|
@ -171,6 +202,16 @@
|
|||
<attr name="outlineToken" />
|
||||
<attr name="xClickExpend" />
|
||||
<attr name="yClickExpend" />
|
||||
|
||||
<!-- new added 2025.10.29 -->
|
||||
<!--<attr name="advBgColor" format="color" />
|
||||
<attr name="advRadius" format="dimension" />
|
||||
<attr name="advTopLeftRadius" format="dimension" />
|
||||
<attr name="advTopRightRadius" format="dimension" />
|
||||
<attr name="advBottomRightRadius" format="dimension" />
|
||||
<attr name="advBottomLeftRadius" format="dimension" />
|
||||
<attr name="advStrokeColor" format="color" />
|
||||
<attr name="advStrokeWidth" format="dimension" />-->
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="UITokenRelativeLayout">
|
||||
|
|
@ -194,6 +235,16 @@
|
|||
<attr name="outlineToken" />
|
||||
<attr name="xClickExpend" />
|
||||
<attr name="yClickExpend" />
|
||||
|
||||
<!-- new added 2025.10.29 -->
|
||||
<!--<attr name="advBgColor" format="color" />
|
||||
<attr name="advRadius" format="dimension" />
|
||||
<attr name="advTopLeftRadius" format="dimension" />
|
||||
<attr name="advTopRightRadius" format="dimension" />
|
||||
<attr name="advBottomRightRadius" format="dimension" />
|
||||
<attr name="advBottomLeftRadius" format="dimension" />
|
||||
<attr name="advStrokeColor" format="color" />
|
||||
<attr name="advStrokeWidth" format="dimension" />-->
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="UITokenLinearLayout">
|
||||
|
|
|
|||
Loading…
Reference in New Issue