Jetpack Compose中Checkbox设padding为0仍右移问题求助
Jetpack Compose 实现Checkbox与上方文本左对齐
我正在搭建一个简单的Jetpack Compose UI,代码如下:
@Preview @Composable fun Confirmation() { Column( modifier = Modifier.padding(start=0.dp), ) { Text(text= "Text") Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start, ) { Checkbox( checked = true, onCheckedChange = {}, ) Text( text = "Sign Me up", fontSize = MaterialTheme.typography.caption.fontSize, ) } }
当前UI里,Checkbox所在的Row中,Checkbox会向右偏移,无法和上方的Text左对齐(把Checkbox换成Text的话布局就正常)。我需要让Checkbox和上方的Text保持左侧对齐的效果。
问题出在Checkbox组件默认带有左侧内边距(遵循Material Design规范),只需要给Checkbox添加Modifier抵消这个内边距即可,修改后的代码如下:
@Preview @Composable fun Confirmation() { Column( modifier = Modifier.padding(start = 0.dp), ) { Text(text = "Text") Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start, ) { Checkbox( checked = true, onCheckedChange = {}, // 抵消Checkbox默认的左侧内边距 modifier = Modifier.padding(start = (-4).dp) ) Text( text = "Sign Me up", fontSize = MaterialTheme.typography.caption.fontSize, ) } } }
如果想更适配不同主题规范,可以使用LocalContentPadding动态获取并抵消内边距,保证对齐逻辑的通用性:
modifier = Modifier.padding(start = -LocalContentPadding.current.start)
这样就能让Checkbox和上方的Text完全左对齐了。
内容的提问来源于stack exchange,提问作者Nie Selam
相关产品推荐
相关产品推荐

