首页 > 解决方案 > RelativeSizeSpan 的 SpanStyle 等价物是什么?

问题描述

在 Compose 中,我们AnnotatedString使用Spanned. 但是,我似乎无法找到一种方法来复制RelativeSizeSpanSpanStyle的行为。

我可以看到的相关选项SpanStyle是:

任何人都可以分享一些见解吗?

标签: androidkotlinandroid-jetpack-compose

解决方案


您可以使用 来实现它SpanStyle,但您需要使用em TextUnit,它是一个相对字体大小单位。这意味着1em等于当前字体大小,而2em是两倍大的字体。

Texts这是演示它如何在两个具有不同字体大小的情况下表现的代码:

val annotatedString = buildAnnotatedString {
    append("This is a ")
    withStyle(style = SpanStyle(fontSize = 2.em)) {
        append("big")
    }
    append(" text")
}
Column {
    Text(annotatedString, fontSize = 20.sp)
    Text(annotatedString, fontSize = 40.sp)
}

big这个词比同一个词中的其他词2 倍Text
您还可以看到,它使第一个单词Text的大小(2 * 20sp)与第二个单词Text40sp)的大小相同。

在此处输入图像描述


推荐阅读