@@ -2,6 +2,9 @@ package com.maf.custom.views.gradient_button
22
33import android.content.Context
44import android.util.AttributeSet
5+ import android.view.ViewGroup
6+ import android.view.ViewGroup.LayoutParams.MATCH_PARENT
7+ import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
58import androidx.compose.animation.animateColor
69import androidx.compose.animation.core.*
710import androidx.compose.foundation.*
@@ -72,6 +75,7 @@ class CustomGradientButton @JvmOverloads constructor(
7275 var animationSpeed by mutableStateOf(2000 )
7376 var clickEffectColor by mutableStateOf(0xffffff )
7477 var fontFamily by mutableStateOf(0 )
78+ var layoutWidth: String? by mutableStateOf(null )
7579 private var onClick: (() -> Unit )? = null
7680
7781 init {
@@ -109,6 +113,11 @@ class CustomGradientButton @JvmOverloads constructor(
109113
110114 clickEffectColor = getColor(R .styleable.CustomButton_clickEffectColor , 0xffffff )
111115 fontFamily = getResourceId(R .styleable.CustomButton_font , 0 )
116+
117+ layoutWidth = attrs?.getAttributeValue(
118+ " http://schemas.android.com/apk/res/android" ,
119+ " layout_width"
120+ )
112121 }
113122 }
114123
@@ -211,6 +220,7 @@ class CustomGradientButton @JvmOverloads constructor(
211220 fontFamily.value
212221 )
213222 ),
223+ layoutWidth = layoutWidth,
214224 listener = onClick
215225 )
216226 }
@@ -250,6 +260,7 @@ fun GradientButton(
250260 endIconPadding : Dp = 8.dp,
251261 clickEffectColor : Color = Color .White ,
252262 fontFamily : FontFamily = FontFamily .Default ,
263+ layoutWidth : String? = null,
253264 listener : (() -> Unit )? = null,
254265) {
255266 var arrangement = when (iconsArrangement) {
@@ -295,7 +306,6 @@ fun GradientButton(
295306 }
296307
297308 val enabledModifier = Modifier
298- .fillMaxWidth()
299309 .wrapContentHeight()
300310 .clip(RoundedCornerShape (borderRound))
301311 .background(background)
@@ -320,15 +330,31 @@ fun GradientButton(
320330 .clipToBounds()
321331 .padding(bottom = innerVerticalPadding, top = innerVerticalPadding)
322332
333+ when {
334+ layoutWidth.equals(MATCH_PARENT .toString()) ->
335+ enabledModifier.fillMaxWidth()
336+ layoutWidth.equals(WRAP_CONTENT .toString()) ->
337+ enabledModifier.wrapContentWidth()
338+ }
339+
323340 Box (
324341 modifier = enabledModifier
325342 ) {
343+
344+ val rowModifier = Modifier
345+ .wrapContentWidth()
346+ .align(Center )
347+ .padding(start = innerHorizontalPadding, end = innerHorizontalPadding)
348+
349+ when {
350+ layoutWidth.equals(MATCH_PARENT .toString()) ->
351+ rowModifier.fillMaxWidth()
352+ layoutWidth.equals(WRAP_CONTENT .toString()) ->
353+ rowModifier.wrapContentWidth()
354+ }
326355 Row (
327356 verticalAlignment = CenterVertically ,
328- modifier = Modifier
329- .fillMaxWidth()
330- .align(Center )
331- .padding(start = innerHorizontalPadding, end = innerHorizontalPadding),
357+ modifier = rowModifier,
332358 horizontalArrangement = arrangement
333359 ) {
334360 startIconRes?.let {
0 commit comments