我尝试使用 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")
}
}
}
我正在尝试渲染“没有”“文本”上方的空白区域和段落的最后一行。 我想知道为什么要渲染空白区域。 (灰色背景仅供测试)