如何移除Jetpack Compose中文本顶部内边距?已尝试includeFontPadding=false无效
移除Jetpack Compose文本顶部内边距(compose_bom 2023.03.00版本)
在compose_bom 2023.03.00版本中,仅设置includeFontPadding = false无法消除文本顶部内边距,可通过以下方法解决:
强制设置lineHeight与fontSize一致
Compose的Text组件默认lineHeight会比fontSize大,即使关闭了字体内边距,布局仍会保留这部分间距。将lineHeight设为和fontSize相同的值,能直接压缩上下额外空间。结合height参数固定文本高度
如果需要更严格的高度控制,可以给TextStyle添加height = 1.em,配合lineHeight让文字完全贴合容器。
修改后的代码示例:
@Preview @Composable fun ShowText() { Column( Modifier .wrapContentSize() .background(Color.Black) ) { Text( text = "Hello!! How are you?", style = TextStyle( color = Color.White, fontSize = 16.sp, lineHeight = 16.sp, // 与字体大小匹配 height = 1.em, // 可选:固定文本高度为1倍字体大小 platformStyle = PlatformTextStyle( includeFontPadding = false ) ) ) } }
如果仍存在细微间距,可能是字体本身自带的字形间距,可以尝试更换字体测试,或者用Modifier.offset(y = (-1).sp)进行微调(不推荐作为首选方案,优先用布局参数控制)。
内容的提问来源于stack exchange,提问作者Compose Learner
相关产品推荐
相关产品推荐

