我试图用jetpack组合圆化CircularProgressIndicator的角。但我没有看到任何成员变量这样做。以下是源代码,但它不把Stroke作为参数。如果它可以,那么我们将能够创建一个圆帽自定义Stroke。
@Composable
fun CircularProgressIndicator(
/*@FloatRange(from = 0.0, to = 1.0)*/
progress: Float,
modifier: Modifier = Modifier,
color: Color = MaterialTheme.colors.primary,
strokeWidth: Dp = ProgressIndicatorDefaults.StrokeWidth
) {
val stroke = with(LocalDensity.current) {
Stroke(width = strokeWidth.toPx(), cap = StrokeCap.Butt)
}
Canvas(
modifier
.progressSemantics(progress)
.size(CircularIndicatorDiameter)
.focusable()
) {
// Start at 12 O'clock
val startAngle = 270f
val sweep = progress * 360f
drawDeterminateCircularIndicator(startAngle, sweep, color, stroke)
}
}
5条答案
按热度按时间ego6inou1#
大写是硬编码在源函数中的。我使用的解决方案基本上是复制粘贴源函数和改变笔划大写。同样对于线性指示器,你需要做一些额外的数学运算,这样圆形大写就不会超过指定的宽度。
zd287kbt2#
我的全面进步是这样的:
5vf7fwbs3#
作为一个想法,你可以只画两个圆圈以上的进展
nue99wik4#
只需像这样将剪辑添加到
LinearProgressIndicator
:modifier = Modifier.fillMaxWidth().clip(RoundedCornerShape(14.dp))
3duebb1j5#
从M2
1.4.0-alpha04
和M31.1.0-alpha04
开始,您可以使用**strokeCap
**参数: