创建自定义文本渲染可组合项时的空白

问题描述 投票:0回答:1

我尝试使用 Canvas 可组合项创建自定义文本渲染可组合项。但是,我不明白 TextMeasurer 如何计算可组合项的最终高度。

这是我迄今为止尝试过的一个最小示例。

@Composable
fun ShyText(
    text: String,
    modifier: Modifier = Modifier
) {
    val textMeasurer = rememberTextMeasurer()
    val measuredText =
        textMeasurer.measure(
            AnnotatedString(text),
            overflow = TextOverflow.Ellipsis,
            constraints = Constraints.fixedWidth(1080),
            style = TextStyle(
                fontSize = 18.sp,
            )
        )
    Canvas(
        Modifier
            .fillMaxWidth()
            .height(measuredText.size.height.dp) //I think the bug is coming from this line.
            .background(Color.DarkGray)
    ) {
        drawText(
            measuredText,
        )

    }
}

这是可组合项的使用方式。

ShyTextTheme {
      Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
          Column(Modifier.padding(innerPadding)) {
                ShyText(
                   text = sampletext,
                )
                Text("text")
                }
            }
}

这是目前的结果 Screenshot of the text composable with a large blank space below it

我正在尝试渲染“没有”“文本”上方的空白区域和段落的最后一行。 我想知道为什么要渲染空白区域。 (灰色背景仅供测试)

android kotlin android-jetpack-compose android-jetpack text-rendering
1个回答
0
投票

© www.soinside.com 2019 - 2024. All rights reserved.