android - 防止 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
)
}
解决方案
正如@CommonsWare 正确指出的那样,您需要反向缩放。
你可以fontScale
从LocalDensity
:
fontSize = with(LocalDensity.current) {
(LocalDimens.current.intervalTimeFontSize / fontScale).sp
},
推荐阅读
- sql-server - 从文件系统执行 SSIS 包
- php - 从搜索结果中排除带有设置自定义字段(元)的帖子
- sql - 如何在 SQL 中计算两个日期之间的行数?
- c# - 如何在 Angular 9 中使用 CryptoJS 来获得与 C# Rfc2898DeriveBytes 相同的加密字符串
- eclipse - 为无源代码的Eclipse插件提供javadoc插件
- javascript - 发布消息时在 jQuery 中使用 addClass 创建一个新框
- node.js - 从 Express 服务器下载文件
- c++ - try-catch 无法在 dlopen 加载的共享库中捕获异常
- powerbi - 如何添加列以将 WEEKNUM 显示为“开始日期 - 结束日期”?
- c# - 如何将单独控制台窗口的输出传递到 Visual Studio 输出窗口?