为什么在 Jetpack Compose-beta08 中 Text("") 的 fontSize 中只有“.sp”可组合,而没有“.dp”

问题描述

我希望文本的大小在 .dp 中,这样它就不会根据系统字体而改变。 如何在 Jetpack Compose "Text" 可组合中实现这一点

解决方法

Compose 团队不打算提供这种可能性,em 有点难用,但如果有人真的需要它,有一个简单的解决方法。

@Composable
fun dpToSp(dp: Dp) = with(LocalDensity.current) { dp.toSp() }

Text("ABCD",fontSize = dpToSp(15.dp))

取自同一个问题跟踪器:https://issuetracker.google.com/190644747

,

使用 em 使我的字体大小保持一致,而与系统字体大小无关

例如Text("ABCD",fontSize = 10.em)

这个问题也在 google 的 issuetracker https://issuetracker.google.com/190644747

,

您可以使用扩展属性:

private fun Int.textDp(density: Density): TextUnit = with(density) {
    this@textDp.dp.toSp()
}


val Int.textDp: TextUnit
    @Composable get() =  this.textDp(density = LocalDensity.current)