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, ) } }
关键修改说明
Column使用fillMaxSize()替代fillMaxWidth(),让布局容器占满整个屏幕空间,确保两个Row的weight(1f)能平均分配屏幕高度。WriteText中合并传入的modifier与内部的修饰符,保证你传入的weight(1f)能作用到组件上,使每个文本块在Row内平均分配宽度。
内容的提问来源于stack exchange,提问作者Trần Thanh Vinh
相关产品推荐
相关产品推荐

