首页 > 解决方案 > 防止 Jetpack Compose 中的文本在设备字体大小增加时放大

问题描述

我的应用程序中有一个显示计时器的屏幕。如果用户决定在设备设置菜单中增加字体大小,那么文本对于布局来说变得太大并且开始换行。对于我的其他文字较多的屏幕来说,这不是问题。对于这个屏幕 - 并且只有这个屏幕 - 如果使用辅助功能选项,我更愿意防止计时器文本的大小增加。

格式良好的撰写页面 设备字体设置 格式错误的撰写页面

如果添加上下文,则有问题的代码如下所示:

HorizontalPager(state = pagerState, dragEnabled = dragEnabled) { page ->
    val timeInSeconds = abs(steps[page % steps.size] / 1000L)
    val minutes = (timeInSeconds / 60).toString().padStart(2, '0')
    val seconds = (timeInSeconds % 60).toString().padStart(2, '0')

    Text(
        modifier = Modifier.fillMaxWidth(0.85f),
        text = stringResource(R.string.pomodoro_active_notification_content_body, minutes, seconds),
        textAlign = TextAlign.Center,
        fontSize = LocalDimens.current.intervalTimeFontSize,
        style = MaterialTheme.typography.h1
    )
}

标签: androidkotlinandroid-jetpack-compose

解决方案


正如@CommonsWare 正确指出的那样,您需要反向缩放。

你可以fontScaleLocalDensity

fontSize = with(LocalDensity.current) {
    (LocalDimens.current.intervalTimeFontSize / fontScale).sp
},

推荐阅读