【发布时间】:2021-04-17 01:59:08
【问题描述】:
来自 SwiftUI,我想创建一个 Text 的视图,其中它具有圆形背景,其中圆形的宽度/高度随着 Text 内的文本变长而增长。
因为 Compose 中没有 Circle(),就像 SwifUI 中一样,所以我只创建了一个 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,但是1. 这看起来很愚蠢,2. Spacer 现在在 ConstraintLayout 的边界之外绘制。
视觉上我想实现这个:
我该怎么做呢?谢谢你:)
【问题讨论】:
标签: android android-jetpack-compose android-jetpack-compose-text