如何使用 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"
)

感谢