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

Android Kotlin Compose布局均分四等份问题及代码修正请求

解决Compose布局四等分失效问题

你的布局未实现预期的四等分效果,核心有两个问题:

  • 外层Column仅设置了fillMaxWidth,未占满整个屏幕高度,导致内部Row的weight(1f)无法基于屏幕高度分配空间。
  • WriteText组件直接新建Modifier,未合并传入的modifier参数,导致你传入的weight(1f)完全失效。

修改后的GiaoDien函数

@Composable
fun GiaoDien() {
    // 用fillMaxSize让Column占满整个屏幕的宽和高
    Column(Modifier.fillMaxSize()) {
        Row(Modifier.weight(1f)){
            WriteText(
                noidung = stringResource(R.string.noi_dung_1),
                tieude = stringResource(R.string.tieu_de_1),
                backgroundColor = Color(0xFF8BC34A),
                modifier = Modifier.weight(1f)
            )
            WriteText(
                noidung = stringResource(R.string.noi_dung_2),
                tieude = stringResource(R.string.tieu_de_2),
                backgroundColor = Color(0xFFEADDFF),
                modifier = Modifier.weight(1f)
            )
        }
        Row(Modifier.weight(1f)) {
            WriteText(
                noidung = stringResource(R.string.noi_dung_3),
                tieude = stringResource(R.string.tieu_de_3),
                backgroundColor = Color(0xFF03A9F4),
                modifier = Modifier.weight(1f)
            )
            WriteText(
                noidung = stringResource(R.string.noi_dung_4),
                tieude = stringResource(R.string.tieu_de_4),
                backgroundColor = Color(0xFFA7900D),
                modifier = Modifier.weight(1f)
            )
        }
    }
}

修改后的WriteText函数

@Composable
fun WriteText(
    noidung: String,
    tieude: String,
    backgroundColor: Color,
    modifier: Modifier = Modifier
) {
    // 合并传入的modifier与内部修饰符,确保weight生效
    Column(
        modifier = modifier
            .fillMaxSize()
            .background(backgroundColor)
            .padding(16.dp),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Text(
            text = tieude,
            modifier = Modifier.padding(bottom = 16.dp),
            fontWeight = FontWeight.Bold
        )
        Text(
            text = noidung,
            textAlign = TextAlign.Justify,
        )
    }
}

关键修改说明

  1. Column使用fillMaxSize()替代fillMaxWidth(),让布局容器占满整个屏幕空间,确保两个Row的weight(1f)能平均分配屏幕高度。
  2. WriteText中合并传入的modifier与内部的修饰符,保证你传入的weight(1f)能作用到组件上,使每个文本块在Row内平均分配宽度。

内容的提问来源于stack exchange,提问作者Trần Thanh Vinh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:13:40