代码之家  ›  专栏  ›  技术社区  ›  Luke Needham

RelativeSizeSpan的SpanStyle等价物是什么?

  •  1
  • Luke Needham  · 技术社区  · 4 年前

    在Compose中,我们使用 AnnotatedString 作为的替代品 Spanned 。然而,我似乎找不到一种方法来复制的行为 RelativeSizeSpan 用一个 SpanStyle .

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

    • fontSize:TextUnit-没有用,因为它只接受绝对的文本大小,而且我需要我的span样式来按某种因素缩放原始字体大小
    • textGeometricTransform:textGeometricTransform-无效,因为 TextGeometricTransform 只执行X转换,并且我需要在X和Y中缩放文本。

    有人能分享一些见解吗?

    0 回复  |  直到 4 年前
        1
  •  6
  •   Maciej Ciemięga Tim    4 年前

    你可以通过 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)
    }
    

    单词 大的 是同一单词中其他单词的2倍 Text .
    您还可以看到,它使 大的 第一个单词 文本 相同的尺寸( 2*20sp )正如第二个单词中的其他单词 文本 ( 40磅 ).

    enter image description here