android - RelativeSizeSpan 的 SpanStyle 等价物是什么?
问题描述
在 Compose 中,我们AnnotatedString
使用Spanned
. 但是,我似乎无法找到一种方法来复制RelativeSizeSpan与SpanStyle的行为。
我可以看到的相关选项SpanStyle
是:
- fontSize: TextUnit - 没用,因为它只接受绝对文本大小,我需要我的 span 样式来按一定比例缩放原始字体大小
- textGeometricTransform:TextGeometricTransform - 没用,因为
TextGeometricTransform
只执行 X 转换,我需要在 X 和 Y 中缩放文本。
任何人都可以分享一些见解吗?
解决方案
您可以使用 来实现它SpanStyle
,但您需要使用em
TextUnit
,它是一个相对字体大小单位。这意味着1em等于当前字体大小,而2em是两倍大的字体。
Texts
这是演示它如何在两个具有不同字体大小的情况下表现的代码:
val annotatedString = buildAnnotatedString {
append("This is a ")
withStyle(style = SpanStyle(fontSize = 2.em)) {
append("big")
}
append(" text")
}
Column {
Text(annotatedString, fontSize = 20.sp)
Text(annotatedString, fontSize = 40.sp)
}
big这个词比同一个词中的其他词大2 倍Text
。
您还可以看到,它使第一个单词Text
的大小(2 * 20sp)与第二个单词Text
(40sp)的大小相同。
推荐阅读
- python - 每次在新笔记本上使用 vs 代码中的“基础”环境
- r - 读取数据文件 - 类似结构的数组 - 数据在一定数量的行之后开始
- python - 为什么一个额外的无类型 str 正在返回?
- networking - 如何让多台服务器来分配网络上的工作负载?Opnet 问题
- oracle - PLS-00103:在预期以下情况之一时遇到符号“DELETE”:(-+ case mod new not null select with
- javascript - 从 .load jquery 返回到我的 div 框的“主页”内容
- javascript - HTML页面和Flask Python App之间的异步通信
- sql - 如何用增量整数替换相同的值?
- eclipse - 为什么我无法在 Eclipse IDE 中导入 java.util.Date.* 包
- gmail-promo-tab - 作为发件人使用 promotab 是否有任何先决条件?