I am using LinearProgressIndicator in my Kotlin Compose project. After upgrading androidx.compose.material3 from version 1.2.0 to 1.3.0, I noticed that the LinearProgressIndicator no longer displays as expected. It should appear as a single, continuous progress bar, but instead, it looks split in two, with an extra dot appearing at the end.
The code is as follows:
@Composable
fun CustomProgressBar() {
LinearProgressIndicator(
progress = { 0.5f },
trackColor = Color.Gray,
modifier = Modifier
.width(200.dp)
.height(15.dp),
color = Color.Blue,
strokeCap = StrokeCap.Round,
)
}
Has anyone encountered this issue, or is there a known workaround to fix the display of LinearProgressIndicator in version 1.3.0?
I found the source of this issue: androidx.compose.material3 1.3.0 added two new parameters to LinearProgressIndicator: gapSize and drawStopIndicator.
This is explained in the KDoc documentation as follows:
gapSize - size of the gap between the progress indicator and the track
drawStopIndicator - lambda that will be called to draw the stop indicator
gapSize: Dp = ProgressIndicatorDefaults.LinearIndicatorTrackGapSize,
drawStopIndicator: DrawScope.() -> Unit = {
drawStopIndicator(
drawScope = this,
stopSize = ProgressIndicatorDefaults.LinearTrackStopIndicatorSize,
color = color,
strokeCap = strokeCap
)
},
When I gave the gapSize and drawStopIndicator Indicator parameters, I got the appearance I wanted and solved this problem.
LinearProgressIndicator(
progress = { 0.5f },
trackColor = Color.Gray,
modifier = Modifier
.width(200.dp)
.height(15.dp),
color = Color.Blue,
strokeCap = StrokeCap.Round,
gapSize = (-15).dp,
drawStopIndicator = {}
)
When we give the drawStopIndicator an empty function {}, we can hide the point at the end of the progress bar.
When strokeCap = StrokeCap.Round, giving gapSize = 0 does not provide a solution, it needs to be given a negative value. If strokeCap = StrokeCap.Butt or strokeCap = StrokeCap.Square is set, giving gapSize = 0 will work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With