防止系统字体缩放 - Jetpack Compose

Har*_*abh 4 android kotlin font-scaling android-jetpack-compose

我正在尝试限制应用程序免受系统字体缩放的影响。我已经尝试了很多解决方案,但没有一个有帮助。他们中的大多数人都告诉我们使用 dp 而不是 sp 来确定文本大小,但在撰写中,如果我是正确的,我们只能使用 sp,因为它需要一个文本单元。有没有正确的方法来限制我们使用 jetpack compose 完成的应用程序中的字体缩放?请帮忙 。

(参考解决方案):https://l.workplace.com/l.php? u=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F21546805%2Fhow-to-prevent-system-font-size-having-effects -to-android-application&h=AT0zIuBPbUONm0T6q8PtqbxCdX6P_ywlp-yFGrqPMqZt7H3wsWYltKO5XwbW3i0lenrxxLi3nn_kMO4aPtFUfig2iG0BcRZpd0wTuZ1_XFpdsjDM6E7RPyZ-G_c2dlmuzGqsSEHYb qBJun0hLLZgOpRUszKbe9-1xQ

Thr*_*ian 7

Int你可以有一个类似Float这样的扩展

@Composable
fun Int.scaledSp(): TextUnit {
    val value: Int = this
    return with(LocalDensity.current) {
        val fontScale = this.fontScale
        val textSize =  value / fontScale
        textSize.sp
  }
Run Code Online (Sandbox Code Playgroud)

可以添加一个Int的扩展参数

val Int.scaledSp:TextUnit
    @Composable get() =  scaledSp()

Text(text = "Hello World", fontSize = 20.scaledSp)
Run Code Online (Sandbox Code Playgroud)