Jetpack Compose文本显示异常及右侧10dp Padding未生效问题
问题修复方案
你的布局问题出在这几个点:
- 父Row设置了
Arrangement.Center,导致两个子Row整体居中,不符合「Close在第一个子Row右侧」的需求 - 第二个子Row固定宽度+右侧padding,压缩了Text的显示空间,导致字符缺失;且未设置对齐方式,Text默认居中所以看起来偏中间
以下是修复后的两种可选方案:
方案1:第一个子Row自适应居中(推荐)
@Composable fun SpeechScreen1(navController: NavController) { var offsetX by remember { mutableStateOf(0f) } val swipeThreshold = 200 // Adjust this threshold as needed Row( modifier = Modifier .fillMaxWidth() .padding(top = 20.dp, end = 10.dp), verticalAlignment = Alignment.CenterVertically ) { // 第一个子Row:占据剩余空间,内部Text居中 Row( modifier = Modifier .weight(1f) .height(28.dp), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically ) { Text(text = "Audio Sample") } // 第二个子Row:紧跟第一个右侧,自适应宽度显示Text Row( modifier = Modifier .height(24.dp) .padding(start = 30.dp), verticalAlignment = Alignment.CenterVertically ) { Text(text = "Close") } } }
方案2:第一个子Row固定宽度
如果你需要第一个子Row保持118dp的固定宽度:
@Composable fun SpeechScreen1(navController: NavController) { var offsetX by remember { mutableStateOf(0f) } val swipeThreshold = 200 // Adjust this threshold as needed Row( modifier = Modifier .fillMaxWidth() .padding(top = 20.dp, end = 10.dp), verticalAlignment = Alignment.CenterVertically ) { Spacer(modifier = Modifier.weight(1f)) // 固定宽度的子Row,内部Text居中 Row( modifier = Modifier .width(118.dp) .height(28.dp), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically ) { Text(text = "Audio Sample") } // 紧跟固定宽度子Row的右侧 Row( modifier = Modifier .height(24.dp) .padding(start = 30.dp), verticalAlignment = Alignment.CenterVertically ) { Text(text = "Close") } } }
修改说明
- 父Row移除
Arrangement.Center,改为添加end = 10.dp的padding,直接实现右侧内边距需求 - 第一个子Row通过
weight(1f)(或配合Spacer)实现居中,同时添加horizontalArrangement = Arrangement.Center让内部Text居中 - 第二个子Row移除固定宽度和自身右侧padding,让Text自适应宽度避免字符缺失;添加
start = 30.dp的padding保持和第一个子Row的间隔
内容的提问来源于stack exchange,提问作者vilnius19
相关产品推荐
相关产品推荐

