android - 如何在jetpack compose中删除文本基线下方的空格?
问题描述
目前我得到这个:
但我想要这样的东西:
但“50”和“min”中的文本也应该与顶部对齐。
我的代码:
Row(verticalAlignment = Alignment.Bottom) {
Text(
text = "18",
color = MaterialTheme.colors.primaryVariant,
fontSize = 60.sp,
modifier = Modifier
.weight(1f).height(62.dp),
textAlign = TextAlign.End,
)
Text(
text = "hrs",
modifier = Modifier.weight(1f).height(16.dp),
)
}
Row(verticalAlignment = Alignment.Top) {
Text(
text = "50",
color = MaterialTheme.colors.primaryVariant,
fontSize = 28.sp,
modifier = Modifier.weight(1f).height(30.dp).align(Alignment.Top),
textAlign = TextAlign.End,
)
Text("min", modifier = Modifier.weight(1f))
}
正如您在我的代码中看到的那样,我目前通过使用 height 属性解决了这个问题。但它对 align top 不起作用,感觉有点不对劲。有没有更好的方法让它工作?
解决方案
您可以使用AnnotatedString
来显示具有多种样式的文本。
就像是:
Row() {
Text(
text = buildAnnotatedString {
withStyle(style = SpanStyle(
color = MaterialTheme.colors.primaryVariant,
fontSize = 60.sp)) {
append("18")
}
append(" hrs ")
})
}
对于第二种情况,您可以将 aBaselineShift
应用于min
文本:
Row() {
Text(
text = buildAnnotatedString {
withStyle(style = SpanStyle(
color = MaterialTheme.colors.primaryVariant,
fontSize = 28.sp)) {
append("50")
}
withStyle(style = SpanStyle(
baselineShift = BaselineShift(+0.65f))) {
append(" min ")
}
})
}
推荐阅读
- blazor-server-side - 基于 Blazor 服务器的应用程序 - 如何返回原始发送页面而不将其硬编码到导航中
- javascript - 如何将 React 表单中的数据插入 mysql?
- r - 在 R 中使用向量、现有变量和 mapply 创建多个新变量
- java - java.util.zip.ZipException:打开 zip 文件错误时出错
- ansible - ansible 没有查看 ansible.cfg 的 collections-path 中定义的集合
- spring - Spring Tool Suite 菜单栏中的字体大小(Eclipse)
- python - 通过 Heroku 使用 Django 接收 [Errno 111] Connect call failed ('127.0.0.1', 6379)
- c++ - 在 xaudio2 中集成 3D 音频
- swift - 如何在swiftUI中使用分页选项卡视图时阻止页面向上和向下滚动
- node.js - 从自定义 npm 包调用脚本