如何使用 Jetpack Compose 通过旋转垂直堆叠文本?
How to stack Text vertically with rotation using Jetpack Compose?
正在尝试对齐文本元素,如下图所示:
如何在 Jetpack Compose 中实现?
通常我会使用垂直方向的线性布局和 rotation of 90
的 TextView。想知道如何在撰写中实现这一目标。
我没有找到在旋转后获得“wrap_content”的方法,但我希望它能有所帮助:
Column (...) {
Text("Element 1",
style = TextStyle(textAlign = TextAlign.Center),
modifier = Modifier
.drawBackground(color = Color.Red)
.padding(16.dp)
.size(20.dp, 100.dp)
.drawLayer(
rotationZ = -90f
)
.size(100.dp, 20.dp)
)
}
compose_verion: 1.0.0-beta02
要旋转元素,您可以使用 Modifier.rotate()
修饰符
Column {
Text(text = "text", modifier = Modifier.rotate(-90f))
Text(text = "text", modifier = Modifier.rotate(-90f))
Text(text = "text", modifier = Modifier.rotate(-90f))
}
来自 的带有自定义修饰符的解决方案对我有用:
fun Modifier.vertical() = layout { measurable, constraints ->
val placeable = measurable.measure(constraints)
layout(placeable.height, placeable.width) {
placeable.place(
x = -(placeable.width / 2 - placeable.height / 2),
y = -(placeable.height / 2 - placeable.width / 2)
)
}
}
用作
Text(
modifier = Modifier.vertical().rotate(-90f),
text = "Vertical aligned element"
)
感谢 。
正在尝试对齐文本元素,如下图所示:
如何在 Jetpack Compose 中实现?
通常我会使用垂直方向的线性布局和 rotation of 90
的 TextView。想知道如何在撰写中实现这一目标。
我没有找到在旋转后获得“wrap_content”的方法,但我希望它能有所帮助:
Column (...) {
Text("Element 1",
style = TextStyle(textAlign = TextAlign.Center),
modifier = Modifier
.drawBackground(color = Color.Red)
.padding(16.dp)
.size(20.dp, 100.dp)
.drawLayer(
rotationZ = -90f
)
.size(100.dp, 20.dp)
)
}
compose_verion: 1.0.0-beta02
要旋转元素,您可以使用 Modifier.rotate()
修饰符
Column {
Text(text = "text", modifier = Modifier.rotate(-90f))
Text(text = "text", modifier = Modifier.rotate(-90f))
Text(text = "text", modifier = Modifier.rotate(-90f))
}
来自
fun Modifier.vertical() = layout { measurable, constraints ->
val placeable = measurable.measure(constraints)
layout(placeable.height, placeable.width) {
placeable.place(
x = -(placeable.width / 2 - placeable.height / 2),
y = -(placeable.height / 2 - placeable.width / 2)
)
}
}
用作
Text(
modifier = Modifier.vertical().rotate(-90f),
text = "Vertical aligned element"
)
感谢