You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose:Box组件内AnnotatedString文本左对齐问题修复

问题:如何让Compose中Box内的AnnotatedString文本既居中于屏幕又自身居中对齐?

当前代码里的文本块已通过Modifier.align(Alignment.Center)定位到屏幕中央,但文本内容自身呈左对齐状态,想要实现文本内容也居中显示,该怎么修改?

原代码:

Box(
    modifier = Modifier.fillMaxSize(),
) {
    val emptyMessage = AnnotatedString(
        text = "You don't have any items in this list. Click the ",
        spanStyle = SpanStyle(Color.Gray)
    ).plus(
        AnnotatedString(
            text = "+ ",
            spanStyle = SpanStyle(Color.Gray, fontSize = 18.sp),
        )
    ).plus(
        AnnotatedString(
            text = "button below to add an item.",
            spanStyle = SpanStyle(Color.Gray)
        )
    )

    Text(
        modifier = Modifier.align(Alignment.Center),
        text = emptyMessage,
    )
}

(配图:文本左对齐显示在屏幕中央的效果截图)

解决方案:

给Text组件添加textAlign = TextAlign.Center参数即可。

Modifier.align(Alignment.Center)仅控制Text组件在父容器Box中的位置,而textAlign参数才是控制文本内容在Text组件内部的对齐方式,二者作用层级不同。

修改后的代码:

Box(
    modifier = Modifier.fillMaxSize(),
) {
    val emptyMessage = AnnotatedString(
        text = "You don't have any items in this list. Click the ",
        spanStyle = SpanStyle(Color.Gray)
    ).plus(
        AnnotatedString(
            text = "+ ",
            spanStyle = SpanStyle(Color.Gray, fontSize = 18.sp),
        )
    ).plus(
        AnnotatedString(
            text = "button below to add an item.",
            spanStyle = SpanStyle(Color.Gray)
        )
    )

    Text(
        modifier = Modifier.align(Alignment.Center),
        text = emptyMessage,
        textAlign = TextAlign.Center // 新增该行实现文本自身居中
    )
}

内容的提问来源于stack exchange,提问作者Raj Narayanan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:10:31