我来自SwiftUI,想要创建一个Text
视图,其中背景是一个圆形,当Text
中的文本变长时,圆形的宽度/高度也随之增加。
由于在Compose中没有像SwiftUI中的Circle()
那样的方法,因此我只创建了一个Spacer
并进行了裁剪。以下代码使用ConstraintLayout
,因为我不知道如何获取Text
的宽度,以便设置我的Circle
组件的大小与其相同:
@Composable
fun CircleDemo() {
ConstraintLayout {
val (circle, text) = createRefs()
Spacer(
modifier = Modifier
.background(Color.Black)
.constrainAs(circle) {
centerTo(text)
}
)
Text(
text = "Hello",
color = Color.White,
modifier = Modifier
.constrainAs(text) {
centerTo(parent)
}
)
}
}
我可以使用
mutableStateOf { 0 }
,并将其更新在附加到 Text
的 onGloballyPositioned
修饰符中,然后将其设置为 Spacer
的 requiredSize
,但是问题是:一,这似乎很愚蠢;二,Spacer
现在绘制在了 ConstraintLayout
的边界之外。在视觉上,我想实现这个效果:
请问我应该如何做到这一点?谢谢 :)
radius = this.size.maxDimension / 2.0f
。然后,您可以在圆圈周围添加内部和外部填充。 - Jojo56400