You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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")
        }
    }
}

修改说明

  1. 父Row移除Arrangement.Center,改为添加end = 10.dp的padding,直接实现右侧内边距需求
  2. 第一个子Row通过weight(1f)(或配合Spacer)实现居中,同时添加horizontalArrangement = Arrangement.Center让内部Text居中
  3. 第二个子Row移除固定宽度和自身右侧padding,让Text自适应宽度避免字符缺失;添加start = 30.dp的padding保持和第一个子Row的间隔

内容的提问来源于stack exchange,提问作者vilnius19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:41:30